首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Swift花园
猫克杯
创建于2021-06-18
订阅专栏
分享 Swift 和 SwiftUI 相关的一些知识和心得
等 100 人订阅
共116篇文章
创建于2021-06-18
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
[SwiftUI 100 天] Accessibility 辅助功能
使得你的应用更加易用意味着你需要花费一些步骤,确保每个人都能充分地使用你的应用。例如,如果用户是盲人,那么你的应用就需要能够很好地利用系统的 VoiceOver 功能,确保你的 UI 可以被读出来。 SwiftUI 对于提供了大量功能,因为它的 VStack 和 HStack …
[SwiftUI] 显式动画和隐式动画
SwiftUI 里有两种动画,显式的和隐式的。隐式动画通过 .animation() modifier 指定。每当视图的某个 animatable 参数改变时,SwiftUI 会动画化呈现旧值到新值的变化。这些 animatable 参数包括尺寸,偏移量,颜色,缩放值,等等。 …
[SwiftUI 100 天] Instafilter 保存滤镜后的图片
为了完成这个项目,我们最后需要实现保存按钮:将滤镜处理后的照片保存到用户的相册,以便用户可以进一步编辑照片,或者分享照片。 我在前面解释过,UIImageWriteToSavedPhotosAlbum() 函数可以实现我们要的功能,但需要一些跟 SwiftUI 不太兼容的代码:…
薛定谔的 @State
同许多开发者一样,我对于 SwiftUI 的了解是从苹果官方的精彩教程开始的。然而,这个开局姿势也给我灌输了一个 “SwiftUI 极其易学” 的错误观念。 在那之后,SwiftUI 的众多充满趣味和技巧的主题强烈地吸引了我。想要快速地搞清楚它们是一件有挑战的事情。即便是一些有…
[SwiftUI 100 天] Instafilter 用 Core Image 实现基础的图片滤镜
我们的项目现在有了一张用户选择的图片,下一步是让用户把各种 Core Image 滤镜应用到这种图片。 我们先从一个简单的滤镜开始,然后扩展到 action sheet 的用法。 接下来我们需要用到上下文和滤镜。一个 Core Image 上下文是一个负责把 CIImage 渲…
[深入 SwiftUI] 探究视图树-part3 嵌套视图
在本系列的前一部分中,我们介绍了 SwiftUI 的锚点偏好。现在我们终于要走出迷雾森林了。在这最后一部分,我们将把所有的东西组合到一起。我们还将学习 SwiftUI 如何处理嵌套视图的偏好,以及 Anchor 的一些其他用法。如常,先例为敬: 迷你地图显示了表单的微缩形式。不…
[SwiftUI 100 天] Instafilter 基本 UI 和图片导入
一个灰色的矩形,显示 “点击以选择图片”,我们导入的图片会放在这里。 一个 “强度” 滑块,用来控制应用的 Core Image 滤镜的程度,存储从 0.0 到 1.0 的数值。 一个 “保存” 按钮,用来写入修改后的图片到用户的相册。 一开始用户还没有选择图片,所以对于图片我…
[SwiftUI 100 天] 如何保存图片到用户的相册
在我们完成这个项目的技术预研之前,还有最后一块 UIKit 的拼图需要解决:一旦我们处理了用户的图片,生成一个 UIImage,我们需要将其存入用户的相册。这里用到一个叫UIImageWriteToSavedPhotosAlbum() 的 UIKit 函数。它的常规用法很琐碎,…
[SwiftUI 100 天] 使用 Coordinator 管理 SwiftUI 的视图控制器
前面我们学习了如何用 UIViewControllerRepresentable 封装 UIKit 视图控制器,以便它们可以被 SwiftUI 使用。我们还特别聚焦了 UIImagePickerController。不过,我们也遇到一个问题:尽管可以显示图像选择器,用户选择图像…
[SwiftUI 100天] 把 UIViewController 包装进一个 SwiftUI 视图
SwiftUI 框架对于构建应用是梦幻般的存在,但目前还远不到完善的程度 —— 还有很多它不能做的事情,假如你需要用到更多高级的功能,需要诉诸 UIKit,有的时候是把你之前的 UIKit 代码集成进来(比如,你的公司有一个现存的 UIKit 开发的应用),有的时候是 UIKi…
[SwiftUI 100 天]集成 Core Image 到 SwiftUI
正如 Core Data 是 Apple 内建的操作数据的框架,Core Image 是操作图片的框架。它不是关于绘制,至少其中的大部分不是关于绘制,而是关于修改现有的图片:应用锐化,模糊,暗角,像素化,等等。如果你曾经使用过 Apple 的 Photo Booth 应用里的各…
[SwiftUI 100 天] 用 ActionSheet 显示多个选项
SwiftUI 提供了 Alert ,用以呈现重要通知,可以支持一到两个按钮,而 sheet() 则是在当前视图之上展示新视图,此外我们还有 ActionSheet:它是 Alert 的替代品,可以让我们添加更多按钮。 视觉上 alerts 和 action sheets 差别…
探究视图树-part2 AnchorPreferences
在 第一部分 的文章中,我们介绍了 preference 的使用。对于向上传递信息的场景,这个东西非常有用。通过定义 PreferenceKey 的关联类型,我们可以把任何东西放进那里。 在第二部分,是时候介绍 Anchor Preferences 了。写这篇文章的时候,我找不…
探究视图树 – Part 1: PreferenceKey
在 SwiftUI 中,我们一般不用关心子视图内部发生了什么。每个视图各自管好自己的事情。但是,我们总会遇到一些特殊情况,这时就需要我们用到 SwiftUI 给我们的好工具。不幸的是,文档极其粗略。接下来的三篇文档尝试对文档做出补充。我们将会了解PreferenceKey协议以…
让 GeometryReader 来解决吧
多数情况下,SwiftUI 会做施展它的布局魔法🧚♀️,生活对于我们来说是如此美妙 🏖。不过,也有很多时候,我们需要对自定义的视图拥有更多的掌控。在这些时候,我们有几种工具 🛠 可以利用。第一个需要我们去探索的就是 GeometryReader。 当你给自定义视图编码时…
访问 SwiftUI 内部的 UIKit 组件
抛开 SwiftUI 尚不完备的工具不说,SwiftUI 的确因其构建 UI 的便捷性给开发者带来了兴奋。有一个令人欣慰的事实是,许多 SwiftUI 组件实际上是基于 UIKit 构建的。除此之外,SwiftUI 和 UIKit 的互操作性使得我们可以充分利用 UIViewR…
[SwiftUI 100 天] 在 SwiftUI 中创建自定义绑定
由于 SwiftUI 给属性包装器发送绑定更新的机制,给属性包装器赋予属性观察者是不管用的。也就是说,尽管模糊半径改变了,打印语句也不会被调用: 为了解决这个问题我们需要创建一个自定义绑定 —— 我们需要直接使用 Binding 结构体,它能让我们在值被读取或者写入时提供自己的…
[SwiftUI 100 天] 用 ActionSheet 显示多个选项
SwiftUI 提供了 Alert ,用以呈现重要通知,可以支持一到两个按钮,而 sheet() 则是在当前视图之上展示新视图,此外我们还有 ActionSheet:它是 Alert 的替代品,可以让我们添加更多按钮。 视觉上 alerts 和 action sheets 差别…
[SwiftUI 100 天] 属性包装器是如何构成结构体的?
在这个项目中我们将构建一个可以让用户从相册中导入照片,然后对照片使用各种滤镜进行修改的应用。我们会涉及许多新的即时,其中核心的两项技能包括使用苹果的 Core Image 框架来开发,以及一项重要的 SwiftUI 技能,集成 UIKit。当然也有别的东西,但这两项是最重要的。…
[SwiftUI 100天] Core Data 中实体的对应关系
Core Data 让我们用关系链接实体。当我们使用@FetchRequest时,Core Data 返回我们要的所有数据。这正是体现出 Core Data 年岁已长的地方之一:为了让关系能够工作,我们需要构建一个自定义的NSManagedObject子类,并且提供对于 Swi…
下一页