SwiftUI 示例,技巧和技术集合,帮助我构建应用程序,解决问题以及了解 SwiftUI 的实际工作方式。主要内容来源 hackingwithswift.com
,下面所有实例都是在 macOS Big Sur 系统上运行,基于 Xcode 12.4
开发。
🚧 注意:示例适用于 macOS/iOS 的 Swift 编程(主要是 macOS),文字解释内容基于 Google 翻译,英文水平有限欢迎 RP 完善,小部分经过了添加或者修改,对部分内容进行了新增。如果对 Swift 语法不熟悉,这里有简单的 Swift 语法入门
,对 SwiftUI 不熟悉,在这里提供了一个 SwiftUI 速查手册
。
🚧 注意:版权归属 hackingwithswift.com
原作者,对任何法律问题及风险不承担任何责任,没有任何商业目的,如果认为侵犯了您的版权,请来信告知。同时我不能完全保证内容的正确性。通过使用本站内容带来的风险与我无关。当使用本站时,代表您已接受了本站的使用条款和隐私条款。
为方便在 Swift 中颜色拾取,提供了一个小工具(UI-Color),欢迎提出改进意见。
只是讨论 SwiftUI 事物的地方 论坛→。想法来源于 sindresorhus/swiftui
✦ 欢迎下载我的 macOS/iOS 应用程序支持我,谢谢 ✦
简要介绍 SwiftUI 的基础
通过实际的应用程序项目学习 SwiftUI
整齐地布局文本
Text
视图创建静态标签?multilineTextAlignment()
调整文本对齐方式?textCase()
使 TextField
大写或小写?Label
并排显示文本和图标?redacted()
将内容标记为占位符?privacySensitive()
将内容标记为私有?Markdown
内容?绘制图标,圆形,渐变等
trim()
绘制实体形状的一部分?ContainerRelativeShape
?VideoPlayer
播放电影?SpriteView
集成 SpriteKit
?布局大小,优先级和间距
frame
?padding
来控制各个视图之间的间距?GeometryReader
提供相对大小?ForEach
循环创建视图?layoutPriority()
控制布局优先级?foregroundStyle()
提供视觉结构?以结构化方式定位视图
VStack
和 HStack
创建堆栈?alignment
和间距 spacing
自定义堆栈布局?Spacer
将视图强制移到堆栈中的一侧?Spacer
?ZStack
在彼此之上叠加视图?zIndex
更改视图分层的顺序?HStack
和 VStack
之间自动切换?ScrollView
添加水平和垂直滚动?ScrollViewReader
使滚动视图移动到某个位置?ScrollView
和 GeometryReader
创建3D效果(如Cover Flow)?LazyVGrid
和 LazyHGrid
在网格中放置视图?LazyVStack
和 LazyHStack
延迟加载视图?HSplitViews
创建左中右三栏布局?响应交互并控制程序状态
Button
和 NavigationLink
中的图像的覆盖颜色?TextField
读取文本?TextField
上添加边框?TextField
?TextField
中禁用自动更正?TextField
的键盘?TextField
?SecureField
创建安全的文本字段?Slider
并从中读取值?Picker
并从中读取值?DatePicker
并从中读取值?Stepper
并从中读取值?labelsHidden()
隐藏 Picker
,Stepper
,Toggle
等标签?TextEditor
?ColorPicker
选择颜色?ProgressView
显示任务的进度?ProgressView
显示不确定的进度?Map
视图?Map
视图中显示注释?Safari
中打开 Web 链接?TextEditor
背景颜色?TextField
、SecureField
和 TextEditor
的提交按钮?快捷方式,旋转方式和外观
scenePhase
检测您的应用何时移至背景或前景?onAppear()
和 onDisappear()
?keyboardShortcut()
添加键盘快捷键?AppDelegate
添加到 SwiftUI 应用?滑动,轻击,摇动和其他输入
highPriorityGesture()
强制一个手势先识别另一个手势?simultaneousGesture()
同时识别两个手势?sequenced(before:)
创建手势链?contentShape()
控制视图的可点击区域?allowsHitTesting()
禁用视图的点击?响应交互并控制程序状态
@ObservedObject
,@State
和 @EnvironmentObject
有什么区别?@StateObject
创建和监视外部对象?@ObservedObject
管理外部对象的状态?@EnvironmentObject
在视图之间共享数据?objectWillChange
手动发送状态更新?SwiftUI
中使用计时器?onChange()
改变状态时如何运行一些代码?创建数据滚动表
List
Section
添加到列表?EditButton
启用对列表的编辑?listRowBackground()
设置列表行的背景色?快速有效地获得用户输入
将视图放置在导航控制器等中
TabView
将视图嵌入选项卡栏中?tabViewStyle()
创建内容的滚动页面?Group
在一起?DisclosureGroup
隐藏和显示内容?iPadOS
添加侧边栏?NavigationView
侧边栏?发生某些情况时显示模式通知
alert
?alert
按钮添加动作?alert
?appStoreOverlay()
推荐另一个应用程序?将您的用户从一个视图移动到另一个视图
NavigationView
上?SwiftUI
中使用程序化导航?sheets
呈现新视图?剪辑,大小,比例,旋转等
offset
?ButtonStyle
自定义按钮ProgressViewStyle
自定义 ProgressView
ToggleStyle
自定义 Toggle
List
TextEditor
等的背景色使用自定义形状控制渲染
通过运动使您的界面栩栩如生
使您的UI结构更易于理解
SwiftUI
包装自定义 UIView
?UIViewRepresentable
结构创建修饰符?学习让您的应用在任何地方都看起来很棒
macOS
上获取半透明列表?watchOS
上制作轮播列表?digitalCrownRotation()
在 watchOS
上读取 Digital Crown
?通过 Core Data
集成和更多功能处理数据
SwiftUI
中使用 Core Data
的简介SwiftUI
一起使用?SwiftUI
视图访问 Core Data
管理的对象上下文?@FetchRequest
创建核心数据获取请求?predicate
过滤核心数据获取请求?SwiftUI
视图添加 Core Data
对象?SwiftUI
视图中删除 Core Data
对象?FileDocument
和 DocumentGroup
创建基于文档的应用程序?fileExporter()
导出文件?SwiftUI
中继续 NSUserActivity
?LocationButton
读取用户的位置?如何使每个人都能使用您的应用
使用Xcode的帮助构建更好的应用程序
Instruments
来配置您的 SwiftUI 代码并识 identify
布局?SwiftUI
中使用 Touch ID
和 Face ID
?Swift
包依赖?如何使用每个 SwiftUI 属性包装器
@State
属性包装器?@StateObject
属性包装器?@Published
属性包装器?@ObservedObject
属性包装器?@EnvironmentObject
属性包装器?@Environment
属性包装器?@Binding
属性包装器?@GestureState
属性包装器?@FetchRequest
属性包装器?@AppStorage
属性包装器?@SceneStorage
属性包装器?@ScaledMetric
属性包装器?@UIApplicationDelegateAdaptor
属性包装器?一如既往,感谢我们出色的贡献者!
使用 action-contributors 制作。
Licensed under the MIT License.