iOS 11 中自适应布局、Safe Area 和 Stack Views 的新手
2023-10-28 05:56:31
玩转 iOS 开发:Layout 的新特性
随着苹果不断推出尺寸各异的新设备,iOS 的设计也发生了显著变化。iOS 11 之后,导航栏大幅加宽,并且可以随着滚动改变大小,这些问题都显而易见。
然而,正如苹果在 2017 年 WWDC 所展示的那样,这些改变并非偶然,而是苹果有意引导开发者使用其一直希望我们采纳的新特性...
自适应布局
iOS 11 引入了全新的自适应布局系统,允许开发者创建在任何设备上都能自动调整大小和布局的应用程序。这意味着你可以构建一个应用程序,在 iPhone 上可以完美运行,而在 iPad 上也可以无缝缩放以填充更大的屏幕。
创建自适应布局的关键在于使用 Auto Layout 和 Size Classes。Auto Layout 允许你以编程方式指定视图之间的约束,而 Size Classes 可以让你根据设备的屏幕尺寸和方向来定义不同的布局。
Safe Area
另一个重要的变化是引入了 Safe Area。Safe Area 是屏幕上一个安全的区域,不受圆角、刘海或其他设备特定功能的影响。这意味着你可以确信你的内容始终显示在屏幕上可见且可交互的区域内。
在代码中访问 Safe Area 非常简单,只需使用 view.safeAreaLayoutGuide
属性即可。
Stack Views
Stack Views 是 iOS 11 中引入的另一种新布局工具。Stack Views 允许你垂直或水平排列一组视图,并自动处理间距和对齐。
Stack Views 非常适合创建列表、菜单和其他需要以一致方式排列视图的界面元素。
Collection Views
Collection Views 已在 iOS 11 中进行了重大改进,增加了对差分更新的支持。差分更新允许你仅更新集合视图中已更改的部分,从而提高了滚动性能。
要利用差分更新,你需要在集合视图的委托中实现以下方法:
func collectionView(_ collectionView: UICollectionView, willPerformUpdatesWithDifferenceOfKinds differenceKinds: Set<NSDiffableDataSourceChangeKind>, withChangeDetails: Set<UICollectionView.SupplementaryElementKind>)
func collectionView(_ collectionView: UICollectionView, performBatchUpdates: @escaping () -> Void, completion: @escaping (Bool) -> Void)
func collectionView(_ collectionView: UICollectionView, didPerformUpdatesWith differenceKinds: Set<NSDiffableDataSourceChangeKind>, withChangeDetails: Set<UICollectionView.SupplementaryElementKind>)
结论
iOS 11 为 iOS 开发人员提供了大量激动人心的新布局工具。通过利用这些工具,你可以创建在任何设备上都美观且响应迅速的应用程序。