• 用NavigationViewKit增强SwiftUI的导航视图

    由于SwiftUI原生提供的导航手段能力有限,因此在之前的版本中,NavigationView总是使用的不是那么的顺手。本文介绍一个我写的针对NavigationView的扩展库——NavigationViewKit。为原生NavigationView解决几个当前的痛点问题。

  • 在SwiftUI中使用UIKit视图

    本文将通过对UITextField的包装来讲解如何在SwiftUI中使用UIKit视图、如何让你的UIKit包装视图具有SwiftUI风格、在SwiftUI使用UIKit视图需要注意的地方

  • 博客更新记

    上个周末,我将博客进行了一番装修升级。我对本次更新的效果比较满意,并非博客变得多好,而是通过此次更新,让我对当今的Web技术有了一定的了解。同时在本次更新过程中,无论是调试Swift代码、CSS代码还是Markdown文档,都是在Visual Studio Code中进行的,这也让我对Visual Studio Code有了进一步的认识和掌握。

  • Core Data with CloudKit (一) —— 基础

    介绍如何使用NSPersistentContainer的文章并不少,但同其他Core Data的功能一样,用好并不容易。在两年多的使用中,我便碰到不少问题。借着今年打算在【健康笔记3】中实现共享数据库功能的机会,我最近较系统地重新学习了Core Data with CloudKit并对其知识点进行了梳理。希望通过这个系列博文能让更多的开发者了解并使用Core Data with Cloudkit功能。

  • @AppStorage研究

    本文探讨的是如何优雅、高效、安全地在SwiftUI中使用@AppStorage,在不借助第三方库的情况下,解决当前@AppStorage使用中出现的痛点

  • 在CoreData中使用持久化历史跟踪

    本文介绍了CoreData的Persistent History Tracking功能。详细讲解了从响应、提取、合并到清除的全过程处理方式,并提供了演示代码供读者使用。

  • WWDC 2021 观后感

    • WWDC
    • 发布于2021年06月18日

    WWDC 2021转眼间已经结束一周了。本次WWDC苹果一如既往的带来了新的操作系统以及一大堆开发工具、软件架构、网络服务等方面的升级。由于疫情的原因,这两年的WWDC都是采用录播形式,不过从视频内容上看,反倒比以前传达地更加精准,对观看者也更加地友善。本文仅从我个人感兴趣的几个角度进行一点介绍,并结合这段时间的学习谈谈使用感受。

  • 用Publish创建博客(三)——插件开发

    我们不仅可以利用Publish内置的接口来开发插件进行扩展,同时还可以使用Publish套件中其他的优秀库(Ink、Plot、Sweep、Files、ShellOut等)来完成更多的创意。本文将通过几个实例(添加标签、增加属性、用代码生成内容、全文搜索、命令行部署)在展示不同扩展手段的同时向大家介绍Publish套件中其他的优秀成员。

  • 用Publish创建博客(二)——主题开发

    拥用强大的主题系统是一个静态网站生成器能否成功的重要原因之一。Publish采用Plot作为主题的开发工具,让开发者在高效编写主题的同时享受到了Swift的类型安全的优势。本文将从Plot开始介绍,让读者最终学会如何创建Publish主题。

  • 用Publish创建博客(一)——入门

    Publish是一款专门为Swift开发者打造的静态网站生成器。它使用Swift构建整个网站,并支持主题、插件和其他大量的定制选项。 本文包含Publish的快速使用入门以及基本结构说明。

  • 在SwiftUI下对iPad进行适配

    SwiftUI创建初衷之一便是可以高效、可靠的适配多个苹果的硬件平台。在健康笔记2.0开发初始,适配iPad便是我本次的设计目标之一。本文并非教程,只是我在进行本次开发中,对于适配iPad的一些教训和心得。

  • 健康笔记2.0开发随笔(六)

    一晃国庆中秋长假即将结束,距离上次的随笔也有了一段时间。在最近的日子里,我一方面继续着开发的进程,同时还要付出相当的精力同iOS14中的各种Bug和异常斗智斗勇。本篇随笔主要记录了这段时间碰到的一些问题,以及聊聊iOS14、Xcode12以及SwiftUI2.0的一些优缺点。想到哪、写到哪,可能逻辑会比较混乱。

  • 健康笔记2.0开发随笔(五)

    一晃国庆中秋长假即将结束,距离上次的随笔也有了一段时间。在最近的日子里,我一方面继续着开发的进程,同时还要付出相当的精力同iOS14中的各种Bug和异常斗智斗勇。本篇随笔主要记录了这段时间碰到的一些问题,以及聊聊iOS14、Xcode12以及SwiftUI2.0的一些优缺点。想到哪、写到哪,可能逻辑会比较混乱。

  • 健康笔记2.0开发随笔(四)

    本周没有太多的精力和情绪用来写代码。这两天在原来统一sheet管理和实时Form的基础上,完成了可以控制取消手势的Sheet。这个是SwiftUI中一直以来的一个重要的缺失功能。 在SwiftUI中制作可以控制取消手势的Sheet

  • 在SwiftUI中制作可以控制取消手势的Sheet

    在前面的两篇文章中,我们探讨了如何制作一个可以判断是否进行了修改的表单,以及如何统一管理app各个层级View的弹出Sheet。今天我们将他们合并在一起,完成整个项目的最终目的——在Sheet中制作一个可以实时响应的表单,并且sheet会感觉表单的情况响应取消手势。

  • 如何在SwiftUI中创建一个实时响应的Form

    我的app健康笔记主要是对数据的收集、管理,所以对于表单的实时检查、响应的要求比较高。因此制作一个对用于输入响应及时、反馈准确的Form十分重要。本文尝试提出一个SwiftUI下的Form开发思路。

  • 在SwiftUI中,根据需求弹出不同的Sheet

    Sheet是一个我比较喜欢的交互形式,它可以很好的控制用户的操作行为,让用户的交互逻辑单线条化。在iOS14上,SwiftUI增加了fullCover,支持了全屏的Sheet方式,让开发者又了更多的选择。

  • 健康笔记2.0开发随笔(一)

    健康笔记从2020年1月上线以来,至今已经过了大半年的时间(可以从[老人新兵 —— 一款iOS app的开发手记](https://zhuanlan.zhihu.com/p/103822455)了解健康笔记app的由来)。在这段时间里,我对于Swift、SwiftUI、CoreData等都有了进一步的了解和认识。在开发1.0版本时所面对的问题和疑惑多数都得到了解决。

  • 用SwiftUI实现iOS mail程序的侧滑菜单

    随着SwiftUI2.0的不断完善,我觉得是时候将我的app做一个较大的升级了。之前一直想在app中实现类似iOS 邮件程序那样优雅的侧滑菜单效果,在网上也找了一下,实现的较好的是适用于UIKit的,基本上没有能够很好的适配SwiftUI的项目库。最终自己在Xcode12实现了一个。

  • HowTo —— SwiftUI2.0 使用ProgressView显示进度条

    SwiftUI2.0 新增了一些便捷的内置控件,比如说Label、ProgressView等。其基本形态都很普通,不过都支持自定义style。官方的意图也比较明显,通过内置控件,规范代码、提高原型编写速度,如需要更精细控制可通过扩展style来完成。

  • HowTo —— 使用onOpenURL处理Universal Links

    SwiftUI2.0由于可以采用新的代码架构(Life Cycle SwiftUI App)来组织app,因此提供了onOpenURL来处理Univeresal Links。不同于在AppDelegate或SceneDelegate中的解决方案,onOpenURL作为一个view modifier,你可以在任意View上注册你的app的URL处理机制。

  • HowTo —— SwiftUI2.0 使用ToolBar替代navigationbarItems

    SwiftUI2.0为了实现更好的多平台支持同时需要兼顾1.0版本代码兼容性,提供了一些与已有控件功能上类似但名称和用法全新的控件。比如ToolBar, navigationTitle等。Toolbar可以实现navigationbarItems的全部功能,并新增了在多平台下的适配。采用了全新的语法,代码更易阅读。

  • HowTO —— SwiftUI2.0 原生的Grid

    SwiftUI的第一版中,官方并没有提供UICollectionView的对应功能。开发者需要自行包装或者依赖很多第三方库。SwiftUI2.0中,苹果通过LazyVGrid、LazyHGrid提供了Grid控件。该控件的实现很有SwiftUI的风格,和众多的第三方库有显著的区别。

  • SwiftUI2.0 —— App、Scene、新的代码结构(一)

    本文简单介绍了SwiftUI2.0中全新提供的App协议、Scene协议,浅谈了在全新的代码结构下如何组织Data Flow,并提供了SwiftUI2.0中预置的Scene的一些使用示例。当前运行环境为 Xcode Version 12.0 beta (12A6159), macOS Big Sur 11.0 Beta版(20A4299v)。

  • @FocusedBinding 浅谈

    在苹果WWDC20中视频中出现了下面的代码,介绍了一个新的属性包装器@FocusedBinding。由于仍处于测试阶段,当前的代码并不能被正确的执行。@FocusedBinding的资料苹果披露的也很少,网上也没有相关的信息。出于个人兴趣,我对它进行了简单的研究。尽管@FocusedBinding在目前Xcode Version 12.0 beta 2 (12A6163b)的版本上运行还有很多问题,但我基本上对其有了一定的了解。

  • SwiftUI2.0 —— Commands(macOS菜单)

    本文介绍了SwiftUI 2.0中,如何为macOS平台添加菜单。苹果在SwiftUI2.0中增加了Multiplatform项目模板,使得同一套代码,仅需少量的适配便可以同时满足iOS以及macOS的需要。对于macOS上运行的app,拥有自定义的菜单是一个十分重要的平台特征。对于没有macOS开发经验的我来说,学习如何设计开发菜单变得十分有趣且必要。

  • SwiftUI 2.0 —— @StateObject 研究

    WWDC20刚刚结束,在过去的一周,苹果为开发者带来了巨大的惊喜。由于新特性实在太多,需要不少时间来消化,我首先选择自己最感兴趣的内容进行一些简单的研究和探讨。本文首先浅谈一下SwiftUI新提供的属性包装器@StateObject。

  • ObservableObject研究——想说爱你不容易

    本文主要研究在SwiftUI中,采用单一数据源(Single Source of Truth)的开发模式,ObservableObject是否为最佳选择。是否可以在几乎不改变现有设计思路下进行新的尝试,以提高响应效率。最后提供了一个仍采用单一数据源设计思路但完全弃用ObservableObject的方式。

  • @state研究

    本文试图探讨并分析SwiftUI 中 @State的实现方式和运行特征;最后提供了一个有关扩展@State功能的思路及例程。读者需要对SwiftUI的响应式编程有基本概念。

  • Vapor4 的安装与配置

    • Vapor
    • 发布于2020年05月07日

    本文介绍了如何在mac 10.5.4和ubuntu 18.04下安装Vapor命令行工具,创建Vapor项目,简单的调试项目以及如何部署到生产环境的过程。文中的运行环境为: Vapor4,Swift5.2,Catalina 10.5.4,Ubuntu18.04