排序
动画(四) – 过渡
以视图的插⼊和移除来设定动画,SwiftUI 将这些动画称为 过渡 (transition) 。 当我们使⽤动画来改变那些会导致视图插⼊或者移除的状态时,SwiftUI 会添加⼀个默认的 .opacity 过渡效果。 struc...
SwiftUI List 中多个按钮 button 同时触发
问题描述 在 list 中的一列中设置多个按钮会出现同时触发的问题 问题演示 解决方案 增设按钮的类型属性 .buttonStyle(.borderless),也可以选择其他的按钮类型。 Button('Add to Red') { redSco...
Kana Quest
这个 app 用来学习日语中的平假名(hiragana)与片假名(katakana)。 基本用户界面 这个项目的 assets.zip 压缩文件,包含两个重要的文件: kana.json 文件包含我们要使用的所有日语字符。 Bundle-...
布局(五) – 对齐
默认情况下,⼏乎所有的视图都会把⼦视图居中对⻬。Text('Hello') .frame(width: 100, height: 100) frame 修饰器拥有⼀个默认值为 .center 的 alignment 参数。这 100⨉100 的区域中,⽂本将被...
布局(二) – 叶子视图
叶子视图 这里是指没有子视图的视图。Text默认情况下,Text 视图会去适应任意的建议尺⼨,设法让⾃⼰适配 (不超过) 这个尺⼨。Text 使用的策略顺序如下:将⽂本分成多⾏ (英⽂内容按单词换⾏)单...
布局(一) – 布局算法
布局的具体算法描述如下:父视图向子视图提供一个建议尺寸。⼦视图基于这个建议尺⼨决定⾃⼰的尺⼨,如果这个⼦视图还有⾃⼰的⼦视图,从步骤 1 开始递归。⼦视图将它的尺⼨报告给⽗视图。⽗视图...
布局(七) – 基于首选项的布局
几何读取器使⽤⼏何读取器 (GeometryReader),我们可以测量被建议的尺⼨。⼏何读取器⽆条件接受被建议尺⼨,并通过⼀个⼏何代理 (GeometryProxy) 将该尺⼨报告给它的视图构建器闭包。通过⼏何代...
布局(三) – 视图修饰符
视图修饰符总是把已经存在的视图包装到另⼀层中去:修饰符会变为它所作⽤的视图的⽗视图。Padding.padding 修饰符使⽤它收到的内边距值来修改建议尺⼨,它会从建议尺⼨的对应边上减去这个边距值...
动画(二) – 控制动画
在 SwiftUI 中,有多种⽅式可以指定动画发⽣地时机 当某个特定的值改变时,触发隐式动画。 当某个特性事件发⽣时,触发显示动画。 动画类型 隐式动画 要指定隐式动画,可以在视图树的任意位置使...
Minesweeper
如果你想继续学习本教程,请使用 App template 创建一个新的 macOS 项目,并将其命名为 Minesweeper。 显示网格 我们的第一步将是显示一个包含棋盘整体布局的方格网格。这些方格中的所有内容都...