-->
最近,我着手重构这个已有四年未进行大更新的应用。重构过程中,我将部分功能模块提取出来并开源分享。本文将简要介绍过去两个月中我开源的几个库。
在 SwiftUI 中,苹果提供的 @AppStorage 属性包装器极大地简化了开发者在视图中响应和修改 UserDefaults 内容的过程。然而,随着 Observation 框架的引入,这一领域出现了新的挑战——苹果尚未为 Observation 提供相应的 UserDefaults 管理方案。本文将探讨如何在 Observation 框架下高效且便捷地管理 UserDefaults 中的数据,并提出一个完整而实用的解决方案。
数据分段(Data Binning)是一种常用的数据处理技术,通常将连续的数值或时间数据划分为多个区间(这些区间在多数情况下是相邻且互不相交)。这种方法不仅涵盖了数据的完整范围,还为每个区间内的数据点提供了明确的界定。通过数据分段,我们可以更有效地分析、可视化和统计处理复杂的数据集。本文将探讨如何利用 Swift Charts 提供的先进 API 来实现精准而高效的数据分段。
SwiftUI 的出现为苹果生态的开发带来了革命性的变化,但在面对某些复杂需求时,它仍然存在一些挑战。最近,我开发了一个名为 Infinite4Pager 的组件,它支持无限四向滚动分页功能。本文中我们将分析实现过程中的关键思路,讨论需要特别注意的事项,并坦诚地审视 SwiftUI 在应对这类场景时的不足之处。通过这个案例,我们不仅能学习到具体的技术实现,还能更好地理解如何在 SwiftUI 的框架下突破常规,创造性地解决问题。
自 Swift 语言诞生以来,XCTest 一直是绝大多数 Swift 开发者的首选测试框架。然而,由于其深植于 Objective-C 的根基,API 设计大量沿袭了该语言的传统,无法充分体现 Swift 的现代编程最佳实践。在某些方面,这甚至成为了发展的障碍。为了克服这些限制,苹果在 WWDC 2024 上正式介绍了由社区开发的 Swift Testing —— 一个专门为 Swift 语言设计的全新测试框架。这个框架已被集成到 Xcode 16 中,并被定位为官方首选的测试工具。在本文中,我们将深入探讨 Swift Testing 框架的特性、用法和其独特之处,分析它如何帮助开发者以更快(Swifter)的方式编写出更符合 Swift 编程习惯(Swifty)的测试代码。
TipKit 是苹果在 WWDC 2023 上新推出的一个框架,可轻松在你的应用程序中显示提示。它可用于向用户介绍新功能,帮助他们发现隐藏的选项或展示完成任务更快的途径等场景。TipKit 可以运行在苹果生态系统的不同硬件环境和操作系统上,包括 iPhone、iPad、Mac、Apple Watch 和 Apple TV。我将用两篇文章探讨 TipKit 框架。在本文中,我们首先学习 TipKit 的用法;在下篇中,我们将讨论更多使用技巧、注意事项、实现原理,以及在其他场景中使用 TipKit 等扩展话题。
随着 SPM( Swift Package Manager ) 功能的不断完善,越来越多的开发者开始在他的项目中通过创建多个 Package 的方式来分离功能、管理代码。SPM 本身提供了对包中各类资源( 包括本地化资源 )的管理能力,但主要局限于在本包中使用这些资源,难以将资源进行共享。在有多个 Target 均需调用同一资源的情况下,原有的方式很难应对。本文将介绍一种在拥有多个 SPM 包的项目中,对资源进行统一管理的方法。
本文将聊聊一个与创建复杂的 SwiftUI 应用很契合的框架 —— The Composable Architecture( 可组装框架,简称 TCA )。包括它的特点和优势、最新的进展、使用中的注意事项以及学习路径等问题。
判断一个可滚动控件( ScrollView、List )是否处于滚动状态在某些场景下具有重要的作用。比如在 SwipeCell 中,需要在可滚动组件开始滚动时,自动关闭已经打开的侧滑菜单。遗憾的是,SwiftUI 并没有提供这方面的 API 。本文将介绍几种在 SwiftUI 中获取当前滚动状态的方法,每种方法都有各自的优势和局限性。
SwiftUI Overlay Container 是一个用于 SwiftUI 的视图容器组件。一个可定制、高效、便捷的视图管理器。仅需简单配置,SwiftUI Overlay Container 即可帮你完成从视图组织、队列处理、转场、动画、交互到显示样式配置等基础工作,让开发者可以将精力更多地投入到应用程序视图的实现本身。
本文将介绍关于在 Core Data 中对 NSManagedObject 进行深拷贝的技术难点、开发思路,以及我的解决方案——MOCloner。
在 WWDC 2021 上,苹果为开发者带来了有一个期待已久的功能——AttributedString,这意味着 Swift 开发人员不再需要使用基于 Objective-C 的 NSAttributedString 来创建样式化文本。本文将对其做全面的介绍并演示如何创建自定义属性。
本文将通过介绍如何创建符合新 API 的 Formatter,让读者从另一个角度了解新 Formatter API 的设计机制;并对新旧两款 API 进行比较。
SheetKit 是一个 SwiftUI 模态视图的扩展库。提供了数个用于模态视图的便捷展示、取消方法,以及几个用于模态视图的 View Extension
由于 SwiftUI 原生提供的导航手段能力有限,因此在之前的版本中,NavigationView 总是使用的不是那么的顺手。本文介绍一个我写的针对 NavigationView 的扩展库——NavigationViewKit。为原生 NavigationView 解决几个当前的痛点问题。
我们不仅可以利用 Publish 内置的接口来开发插件进行扩展,同时还可以使用 Publish 套件中其他的优秀库(Ink、Plot、Sweep、Files、ShellOut 等)来完成更多的创意。本文将通过几个实例(添加标签、增加属性、用代码生成内容、全文搜索、命令行部署)在展示不同扩展手段的同时向大家介绍 Publish 套件中其他的优秀成员。
拥用强大的主题系统是一个静态网站生成器能否成功的重要原因之一。Publish 采用 Plot 作为主题的开发工具,让开发者在高效编写主题的同时享受到了 Swift 的类型安全的优势。本文将从 Plot 开始介绍,让读者最终学会如何创建 Publish 主题。
Publish 是一款专门为 Swift 开发者打造的静态网站生成器。它使用 Swift 构建整个网站,并支持主题、插件和其他大量的定制选项。
本文介绍了其中几个在健康笔记开发过程中使用的第三方的开源库
SwiftUI 目前可以提供 sheet,fullScreenCover,alert,actionsheet 等弹出视图用于丰富 UI 交互。不过种类还是有些单调。为了能够更方便的编写各种弹出式窗口的代码,我写了一个简单的 SwiftUI 库 —— SwiftUIOverlayContainer。
随着 SwiftUI2.0 的不断完善,我觉得是时候将我的 app 做一个较大的升级了。之前一直想在 app 中实现类似 iOS 邮件程序那样优雅的侧滑菜单效果,在网上也找了一下,实现的较好的是适用于 UIKit 的,基本上没有能够很好的适配 SwiftUI 的项目库。最终自己在 Xcode12 实现了一个。
本文介绍了如何在 mac 10.5.4 和 ubuntu 18.04 下安装 Vapor 命令行工具,创建 Vapor 项目,简单的调试项目以及如何部署到生产环境的过程。文中的运行环境为:Vapor4,Swift5.2,Catalina 10.5.4,Ubuntu18.04