首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
Swift花园
猫克杯
创建于2021-06-18
订阅专栏
分享 Swift 和 SwiftUI 相关的一些知识和心得
等 74 人订阅
共116篇文章
创建于2021-06-18
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
猫克杯
2年前
SwiftUI
用 allowsHitTesting() 禁用交互
SwiftUI 有一套高级的点击测试算法,既用于视图的 frame,也用于视图的内容。例如,如果你给某个文本视图添加了一个点击手势,那么文本视图的所有部分都会变成可点击的 —— 你不会因为刚好点击在一个空格的位置而让点击穿透文本视图。另一方面,如果你给一个圆添加相同的手势,Sw…
935
3
评论
猫克杯
2年前
SwiftUI
[SwiftUI 100 天] Flashzilla - 振动反馈
尽管 SwiftUI 并不内建震动反馈的功能,我们可以借助 UIKit 和 Core Haptics 轻松地实现震动功能。这两个框架都是内建于系统的,对于所有 iPhone 平台都是可用的。以防你不了解震动反馈这个术语,我简单解释一下,“震动反馈” 在设备中内置了一个小的马达,…
887
1
评论
猫克杯
2年前
SwiftUI
[SwiftUI 100 天] Flashzilla - 应用手势
在这个项目中我们将构建一个帮助用户通过抽认卡来学习的应用 —— 比如卡片一面写着 “to buy”,另一面写着 “comprar”。当然,因为这是一个数字化的应用程序,我们不必真的担心所谓的“另一面”,只需要确保卡片在被点击时显示正确的信息。 项目的名称实际上来自我的第一个 i…
209
1
评论
猫克杯
2年前
SwiftUI
[SwiftUI 100 天] 推送通知
对于应用的最后一部分,我们还将添加一个上下文菜单,让用户可以选择被提醒联络某个特定的人。它会用到 iOS 的 UserNotifications 框架来创建本地通知。 有趣的地方在于我们安排本地通知的方式。记住,第一次使用我们需要使用 requestAuthorization(…
2177
5
1
猫克杯
2年前
SwiftUI
[SwiftUI 100 天] 用 UserDefaults 保存和加载数据
应用的大部分已经可以工作,但还有一个致命缺陷:应用重启后所有数据都被擦除,这显然不合理。我们可以让 Prospects 构造器从 UserDefaults 中加载数据,在数据发生变化时再写回 UserDefaults。 这回我们的数据存储会用一种稍微简单一点的格式:虽然 Pro…
1905
3
评论
猫克杯
2年前
SwiftUI
[SwiftUI 100 天] 利用上下文添加选项
我们需要一个能够互相移动已联络过的人和未联络过的人的手段。最简单的做法是添加一个上下文菜单到 ProspectsView 的 VStack 上,让用户可以长按人员列表的人,触发菜单,然后点击选项把人在 tab 间移动。 现在,要把这个视图共享到三个地方,所以我们需要确保这个上下…
155
1
评论
猫克杯
2年前
SwiftUI
[SwiftUI 100 天] 扫描二维码
扫描二维码 —— 或者任何可视的码,比如条形码 —— 都可以借助 Apple 的 AVFoundation 库实现。但这个库没有被很好地集成到 SwiftUI 中,因此为了免去直接使用 AVFoundation 库的麻烦,我把一个二维码读取器封装成 Swift 包,方便我们在 …
763
1
评论
猫克杯
2年前
SwiftUI
[SwiftUI 100 天] 生成和缩放二维码
Core Image 可以让我们基于任何字符串输入生成一个二维码,而且过程极快。不过,这里有一个问题:图像的尺寸很小,只包含承载数据必要的像素。要让二维码更好用,需要借助 SwiftUI 的图像插值。因此,在这一步我们要让用户在表单里输入他们的名字和邮件地址,然后用这两条信息生…
638
1
评论
猫克杯
2年前
Swift
Swift 5.3 新特性
Swift 5.3 有不少变化,这其中包括多模式 catch 语句,多拖尾闭包,以及 Swift Package Manager 的一些重要改变。 本文会带你浏览一些主要的变化,同时提供参考代码,以便你可以自行尝试。以下是要介绍的新特性的清单: self. 书写省略 SE-02…
3355
15
1
猫克杯
2年前
SwiftUI
[SwiftUI 100 天] 动态过滤 SwiftUI 列表
对于 SwiftUI 的 List 视图,配合使用的对象最好遵循 Identifiable 协议,或者你至少需要提供某个 id 参数,确保元素对应的字段是唯一的。 在我们的应用中,有三个 ProspectsView 实例,它们根据传入的 FilterType 属性的不同呈现不同…
905
1
评论
猫克杯
2年前
SwiftUI
[SwiftUI 100 天] 用 @EnvironmentObject 在 tab 间共享数据
SwiftUI 的 environment 可以让我们以一种相当优雅的方式共享数据:任何视图都可以把数据发送到环境中,然后任何子视图都可以从环境中读出这些数据。更棒的是,如果一个视图改变对象,所有其他视图都会自动更新 —— 这是一种极为聪明的在大型应用中共享数据的方式。 我们的…
1337
4
评论
猫克杯
2年前
SwiftUI
[Swift UI 100] Hot Prospect 构建 tab bar
这个应用将在 tab bar 里显示四个 SwiftUI 视图:一个显示你遇见的人,一个显示你联络的人,一个显示你还没接触的人,最后一个显示你的个人信息,以便其他人可以扫描。 前三个视图是一个概念上的三个变体,最后一个差异较大。因此,我们只需要三个视图就可以表示全部的 UI:一…
1081
2
评论
猫克杯
2年前
SwiftUI
[SwiftUI 100 天] 在 Xcode 中添加 Swift 依赖包
目前为止我们看到的代码都是我们自己从头构建的,所以你可以精确地看到代码的工作方式。不过有的时候,自起炉灶是有风险的:可能代码复杂,可能容易出错,可能变更频繁,或者有其他各种问题,这也是依赖存在的原因 —— 它能够拉取第三方代码,并且应用于我们的项目。 Xcode 自带一个依赖管…
971
1
评论
猫克杯
2年前
SwiftUI
[SwiftUI 100 天] 安排本地通知
iOS 有一个叫 UserNotifications 的框架,它的功能跟你想的一样:让我们创建可以显示在锁定的屏幕上的通知。 通知有两种,基于创建的位置而不同:本地通知是我们本地安排的,远程通知(通常又称为推送通知)是从某个地方的服务器发送的。 但本地通知相对来说要简单的多,因…
1257
2
1
猫克杯
2年前
SwiftUI
[SwiftUI 100 天] 创建上下文菜单
当用户点击按钮或者导航链接时,毫无疑问 SwiftUI 会触发那些视图的默认动作,但是假如用户长按某样东西并且保持呢?在老 iPhone 上,用户可以通过用力按压触发 3D Touch,这里的原理是一样的:用户想要正在交互的东西的更多选项。 SwiftUI 可以让我们附加上下文…
825
3
1
猫克杯
2年前
SwiftUI
[SwiftUI 100 天] 在 SwiftUI 中控制图像插值
在 SwiftUI 中,当你把一个 Image 的内容拉伸到比它原始尺寸更大的大小时会发生什么?默认情况下,我们会得到 图像插值,iOS 很平滑地地混合了像素,你可能都没有意识到它们是被拉伸过的。当然,这个过程有性能开销,但开销多数情况下都可以忽略。 不过,图像插值有一种情况可…
717
3
评论
猫克杯
2年前
SwiftUI
[SwiftUI 100 天] 手动发布 ObservableObject 的变化
遵循 ObservableObject 协议的类可以使用 SwiftUI 的 @Published 属性包装器来自动发布属性的变化,以便使用该类的实例的任何视图能够自动重新调用 body 属性,保持界面与数据的一致。多数情况下,这个机制都可以很好 地工作,不过有时候你可能会需要…
958
2
评论
猫克杯
2年前
SwiftUI
[SwiftUI 100 天] Hot Prospects - 理解 Swift 的 Result 类型
让一个函数在执行成功时返回某些数据,执行失败时返回某个错误是很常见的做法。我们通常会利用抛出错误的函数来实现这个要求,一旦函数抛出错误运行 catch 块,这样就独立地处理成功和失败的逻辑。但是假如函数并不是立即返回的呢? 文本视图呈现的时候,网络请求就会启动,从 apple.…
712
3
1
猫克杯
2年前
SwiftUI
[SwiftUI 100 天] 用 TabView 和 tabItem() 来创建 tab
导航视图非常适用于创建层次化的视图栈,让用户可以层层深入数据,但它们对于不相关的数据则不那么合适。 对于那种数据,我们需要用到 SwiftUI 的 TabView,它会在屏幕底部创建一排不带边框的按钮,每次点击不同的按钮显示不同的视图。 不过,实践中你基本上一定需要对 tab …
3461
5
2
猫克杯
2年前
SwiftUI
[SwiftUI 100 天] 用 @EnvironmentObject 从环境中读取值
这个项目我们要来构建 Hot Prospect 应用,这是一个跟踪你在会议中遇到的人的应用。你之前可能见过这样的应用:显示一个二维码,存储你的参与信息,其他人可以扫描这个二维码,以便之后可能的进一步接触。 这个功能听起来很容易,但其实会涉及一些非常重要的技术:创建 tab 栏和…
482
1
评论
下一页
温馨提示
当前操作失败,如有疑问,可点击申诉