• 在 SwiftUI 视图中打开 URL 的若干方法

    本文将介绍在 SwiftUI 视图中打开 URL 的若干种方式,其他的内容还包括如何自动识别文本中的内容并为其转换为可点击链接,以及如何自定义打开 URL 前后的行为等。

  • 为自定义属性包装类型添加类 @Published 的能力

    本文将对 @Published 与符合 ObservableObject 协议的类实例之间的沟通机制做以介绍,并通过三个示例:@MyPublished( @Published 的仿制版本 )、@PublishedObject(包装值为引用类型的 @Published 版本)、@CloudStorage(类似 @AppStorage ,但适用于 NSUbiquitousKeyValueStore ),来展示如何为其他的自定义属性包装类型添加可访问包裹其的类实例的属性或方法的能力。

  • SwiftUI 的动画机制

    大多初学者都会在第一时间惊叹于 SwiftUI 轻松实现各种动画效果的能力,但经过一段时间的使用后,他们会发现 SwiftUI 的动画并非像表面上看起来那样容易驾驭。开发者经常需要面对:如何动、怎么动、什么能动、为什么不动、为什么这么动、如何不让它动等等困扰。对 SwiftUI 的动画处理逻辑了解的不够深入是造成上述困扰的主要原因。本文将尝试对 SwiftUI 的动画机制做以介绍,以帮助大家更好地学习、掌握 SwiftUI 的动画,制作出满意的交互效果。

  • 我正在使用中的博客创作工具

    • Blog
    • 发布于2022年05月05日

    从 2020 年 4 月开始,截至本月,我的博客【肘子的 Swift 记事本】已创建 2 年了。这期间,使用过不少的工具以协助博客的创作。本文将对我正在使用中的应用工具(包含资料收集整理、文本编辑、截图及录屏、格式转换、图片编辑、图床管理等方面)做以介绍。

  • 优化在 SwiftUI List 中显示大数据集的响应效率

    拥有优秀的交互效果和手感,是很多 iOS 开发者长久以来坚守的原则。同样一段代码,在不同数据量级下的响应表现可能会有云泥之别。本文将通过一个优化列表视图的案例,展现在 SwiftUI 中查找问题、解决问题的思路,其中也会对 SwiftUI 视图的显式标识、@FetchRequest 的动态设置、List 的运作机制等内容有所涉及。本文的范例需运行在 iOS 15 及以上系统,技术特性也以 SwiftUI 3.0 为基础。

  • 在 SwiftUI 中用 zIndex 调整视图显示顺序

    本文将对 SwiftUI 的 zIndex 修饰符做以介绍,包括:使用方法、zIndex 的作用域、通过 zIndex 避免动画异常、为什么 zIndex 需要设置稳定的值以及在多种布局容器内使用 zIndex 等内容。

  • ViewBuilder 研究(下) —— 从模仿中学习

    在【ViewBuilder 研究(上)—— 掌握 Result builders】中,我们对 result builders 做了较详细的介绍。本篇我们将通过对 ViewBuilder 的仿制,探索更多有关 SwiftUI 视图背后的秘密。

  • ViewBuilder 研究(上)—— 掌握 Result builders

    作为一个严重依赖 SwiftUI 的开发者,同视图打交道是最平常不过的事情了。从第一次接触 SwiftUI 的声明式编程方式开始,我便喜欢上了这种写代码的感觉。但接触地越多,碰到的问题也越多。起初,我单纯地将很多问题称之为灵异现象,认为大概率是由于 SwiftUI 的不成熟导致的。随着不断地学习和探索,发现其中有相当部分的问题还是因为自己的认知不够所导致的,完全可以改善或避免。我将通过上下两篇博文,对构建 SwiftUI 视图的 ViewBuilder 进行探讨。本篇将首先介绍 ViewBuilder 背后的实现者 —— result builders 。

  • SwiftUI Overlay Container 2 —— 可定制、高效、便捷的视图管理器

    SwiftUI Overlay Container 是一个用于 SwiftUI 的视图容器组件。一个可定制、高效、便捷的视图管理器。仅需简单配置,SwiftUI Overlay Container 即可帮你完成从视图组织、队列处理、转场、动画、交互到显示样式配置等基础工作,让开发者可以将精力更多地投入到应用程序视图的实现本身。

  • 博客暂时停更通知

    • Blog
    • 发布于2022年01月24日

    我的博客【肘子的Swift记事本】已经上线 2 年了。撰写博客的初衷是想通过文字来记录自己的学习的过程、加深理解并将所得分享给其他的朋友。越是撰写新的内容,越能够发现自己的不足。作为一个编程爱好者,我深知自己的基础知识相当薄弱,又该进行系统性充电了。同去年上半年停更的原因一样,我打算用一段完整的时间来充实自己,并将自己近来的学习所得通过实践的形式得以消化。