共用方式為


iOS 11 中的可視化設計更新

在iOS 11中,Apple引進了新的視覺效果變更,包括導覽列、搜尋列和數據表檢視的更新。 此外,還進行了改進,以允許在邊界和全螢幕內容上有更多彈性。 本指南涵蓋這些變更。

如需 iPhone X 設計的詳細資訊,請觀看 Apple 的 iPhone X 設計影片。

UIKit

iOS 11 中已調整 UIKit 列,讓使用者更容易存取它們。

其中一項這類變更是當用戶長時間按下條形圖項目時出現的新 HUD 顯示器。 若要啟用此功能,請在 上UIBarItem設定 largeContentSizeImage 屬性,並透過資產目錄新增較大的映射:

barItem.LargeContentSizeImage = UIImage.FromBundle("AccessibleImage");

iOS 11 引進了新功能,讓導覽列標題更容易閱讀。 應用程式可以將 屬性指派給 true, PrefersLargeTitles 以顯示這個較大的標題:

NavigationController.NavigationBar.PrefersLargeTitles = true;

在您的應用程式中設定較大的標題,會使 應用程式中的所有 導覽列標題看起來更大,如下列螢幕快照所示:

大型導覽標題

若要控制在導覽列上顯示大型標題時,請將瀏覽專案上的 設定 LargeTitleDisplayModeAlwaysNeverAutomatic

搜尋控制器

iOS 11 可讓您更輕鬆地將搜尋控制器直接新增至導覽列。 建立搜尋控制器之後,請使用 SearchController 屬性將其新增至導覽列:

NavigationItem.SearchController = searchController;

具有搜尋列的大型導覽標題

視應用程式的功能而定,您可能或可能不希望搜尋列在使用者捲動清單時隱藏。 您可以使用 屬性來調整此值 HidesSearchBarWhenScrolling

邊界

Apple 已建立新的屬性 – directionalLayoutMargins 可用來設定檢視與子檢視之間的空間。 搭配 leadingtrailing 內嵌使用directionalLayoutMargins。 不論系統是由左至右或由右至左的語言,您應用程式中的間距都會由iOS適當地設定。

在 iOS 10 和之前,所有檢視都有其對齊的最小邊界大小。 iOS 11 引進了使用 ViewRespectsSystemMinimumLayoutMargins覆寫的選項。 例如,將此屬性設定為 false 可讓您將邊緣內嵌調整為零:

ViewRespectsSystemMinimumLayoutMargins = false;
View.LayoutMargins = UIEdgeInsets.Zero;

顯示 ios 11 中零內嵌邊界的影像

全螢幕內容

iOS 7 引進topLayoutGuidebottomLayoutGuide作為限制檢視的方式,使其不會由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 中有一些小型但重大的變更。

根據預設,頁首、頁尾和儲存格現在會根據其內容自動重設大小。 若要退出退出此自動重設大小行為,請將 EstimatedRowHeightEstimatedSectionHeaderHeightEstimatedSectionFooterHeight 設定為零。

不過,在某些情況下(例如,在介面產生器中使用現有的分鏡腳本時新增 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中的拖放。 如需詳細資訊,請參閱 拖放 指南。