在 iOS 11 中,Apple 引入了新的视觉更改,包括导航栏、搜索栏和表视图的更新。 此外,还进行了改进,允许在边距和全屏内容方面具有更大的灵活性。 本指南介绍了这些更改。
有关专门针对 iPhone X 进行设计的信息,watch Apple 的
iPhone X 设计
视频。
UIKit
UIKit 栏已在 iOS 11 中进行了调整,使其更易于最终用户访问。
其中一项更改是当用户长按条形图项时显示的新 HUD 显示器。 若要启用此功能,请在 上
UIBarItem
设置
largeContentSizeImage
属性,并通过
资产目录
添加更大的映像:
barItem.LargeContentSizeImage = UIImage.FromBundle("AccessibleImage");
iOS 11 引入了新功能,使导航栏标题更易于阅读。 应用可以通过将 属性分配给 PrefersLargeTitles
true 来显示此更大的标题:
NavigationController.NavigationBar.PrefersLargeTitles = true;
在应用中设置更大的标题会使应用 中的所有 导航栏标题显示得更大,如以下屏幕截图所示:
若要控制大型标题何时显示在导航栏上,请将导航项上的 设置为 LargeTitleDisplayMode
Always
、 Never
或 Automatic
。
搜索控制器
iOS 11 使将搜索控制器直接添加到导航栏变得更加容易。 创建搜索控制器后,请使用 属性将其添加到导航栏:SearchController
NavigationItem.SearchController = searchController;
根据应用的功能,你可能不希望在用户滚动浏览列表时隐藏搜索栏。 可以使用 属性对此进行调整 HidesSearchBarWhenScrolling
。
Apple 创建了一个新属性 - directionalLayoutMargins
- 可用于设置视图和子视图之间的空间。 与 directionalLayoutMargins
或 trailing
insets 一起使用leading
。 无论系统是从左到右还是从右到左的语言,应用中的间距都由 iOS 适当设置。
在 iOS 10 及以前版本中,所有视图都有一个最小边距大小,可以对齐。 iOS 11 引入了使用 ViewRespectsSystemMinimumLayoutMargins
替代的选项。 例如,将此属性设置为 false 可让你将边缘插页调整为零:
ViewRespectsSystemMinimumLayoutMargins = false;
View.LayoutMargins = UIEdgeInsets.Zero;
iOS 7 引入了topLayoutGuide
和 bottomLayoutGuide
作为限制视图的一种方式,以便它们不会被 UIKit 栏隐藏,并且位于屏幕的可见区域。 这些已在 iOS 11 中弃用,转而使用 安全区域。
安全区域是一种新的方式来思考应用程序的可见空间,以及如何在视图和超级视图之间添加约束。 例如,考虑以下图像:
以前,如果已添加视图并希望它在上面的绿色区域中可见,则可以将其限制在 的底部TopLayoutGuide
和顶部BottomLayoutGuide
。 在 iOS 11 中,应将其限制在安全区域的 顶部 和 底部 。 以下是一个示例:
var safeGuide = View.SafeAreaLayoutGuide;
imageView.TopAnchor.ConstraintEqualTo(safeGuide.TopAnchor).Active = true;
safeGuide.BottomAnchor.ConstraintEqualTo(imageView.BottomAnchor).Active = true;
UITableView 在 iOS 11 中进行了许多小而重大的更改。
默认情况下,页眉、页脚和单元格现在会根据其内容自动调整大小。 若要选择退出此自动调整大小行为,请将 EstimatedRowHeight
、 EstimatedSectionHeaderHeight
或 EstimatedSectionFooterHeight
设置为零。
但是,在某些情况下, (例如在 Interface Builder 中使用现有情节提要时添加 UITableViewController) 可能需要手动启用自大小单元格。 为此,请确保已分别在“单元格”、“页眉”和“页脚”的表视图上设置以下属性:
// Cells
TableView.RowHeight = UITableView.AutomaticDimension;
TableView.EstimatedRowHeight = UITableView.AutomaticDimension;
// Header
TableView.SectionHeaderHeight = UITableView.AutomaticDimension;
TableView.EstimatedSectionHeaderHeight = 40f;
//Footer
TableView.SectionFooterHeight = UITableView.AutomaticDimension;
TableView.EstimatedSectionFooterHeight = 40f;
iOS 11 扩展了行操作的功能。 UISwipeActionsConfiguration
引入了 以定义一组操作,当用户在表格视图中的某一行上向任一方向轻扫时,应执行这些操作。 此行为类似于本机 Mail.app 的行为。 有关详细信息,请参阅 行操作 指南。
表视图在 iOS 11 中支持拖放。 有关详细信息,请参阅 拖放 指南。
iOS 11 (Apple) 的新增功能
更新了 apple) App Store Product Page (
针对 iPhone X (Apple) (视频) 进行设计
更新适用于 iOS 11 的应用 (WWDC) (视频)