3 回答

TA貢獻1830條經驗 獲得超3個贊
我想提一下safeAreaLayoutGuide
UIView
-viewDidAppear:
表示視圖中不被條形條和其他內容遮掩的部分的布局指南。 當視圖在屏幕上可見時,本指南反映了導航欄、選項卡條、工具欄和其他祖先視圖未涵蓋的視圖部分。(在tvOS中,安全區反映沒有覆蓋屏幕邊框的區域。) 如果視圖當前未安裝在視圖層次結構中,或尚未在屏幕上顯示,則布局指南邊緣與視圖邊緣相等。.
(強調地雷)
-viewDidLoad:
layoutFrame
{{0, 0}, {375, 812}}
{{0, 44}, {375, 734}}

TA貢獻1872條經驗 獲得超4個贊
早些時候在IOS 7.0-11.0中< 棄用>
UIKit
使用 那就是 UIView
財產 iOS 11+用途 安全AreaLayoutGuide 這也是 UIView
財產 使能 安全區布局指南來自文件檢查器的復選框。 安全區域可以幫助您將視圖放置在整個界面的可見部分中。 在……里面 視頻流安全區域還包括屏幕的過掃描接口,表示屏幕邊框覆蓋的區域。 SecurityAreaLayoutGuide反映視圖中未被導航條、選項卡條、工具欄和其他祖先視圖覆蓋的部分。 使用安全區域作為布局您的內容的幫助,如 UIButton
等。 在為iPhoneX設計時,您必須確保布局填充屏幕,并且不會被設備的圓角、傳感器外殼或訪問主屏幕的指示器所掩蓋。 確保背景延伸到顯示的邊緣,垂直滾動布局,如表和集合,一直延續到底部。 iPhoneX上的狀態欄比其他iPhone高。如果應用程序采用固定的狀態欄高度來定位狀態欄以下的內容,則必須更新應用程序,以便根據用戶的設備動態定位內容。請注意,當語音記錄和位置跟蹤等后臺任務處于活動狀態時,iPhoneX上的狀態欄不會更改高度 print(UIApplication.shared.statusBarFrame.height)//44 for iPhone X, 20 for other iPhones
家用指示器容器高度為34點。 一旦你啟用 安全區布局指南您可以看到接口生成器中列出的安全區域約束屬性。
self.view.safeAreaLayoutGuide
objc:
self.demoView.translatesAutoresizingMaskIntoConstraints = NO; UILayoutGuide * guide = self.view.safeAreaLayoutGuide; [self.demoView.leadingAnchor constraintEqualToAnchor:guide.leadingAnchor].active = YES; [self.demoView.trailingAnchor constraintEqualToAnchor:guide.trailingAnchor].active = YES; [self.demoView.topAnchor constraintEqualToAnchor:guide.topAnchor].active = YES; [self.demoView.bottomAnchor constraintEqualToAnchor:guide.bottomAnchor].active = YES;
斯威夫特
demoView.translatesAutoresizingMaskIntoConstraints = false if #available(iOS 11.0, *) { let guide = self.view.safeAreaLayoutGuide demoView.trailingAnchor.constraint(equalTo: guide.trailingAnchor).isActive = true demoView.leadingAnchor.constraint(equalTo: guide.leadingAnchor).isActive = true demoView.bottomAnchor.constraint(equalTo: guide.bottomAnchor).isActive = true demoView.topAnchor.constraint(equalTo: guide.topAnchor).isActive = true } else { NSLayoutConstraint(item: demoView, attribute: .leading, relatedBy: .equal, toItem: view, attribute: .leading, multiplier: 1.0, constant: 0).isActive = true NSLayoutConstraint(item: demoView, attribute: .trailing, relatedBy: .equal, toItem: view, attribute: .trailing, multiplier: 1.0, constant: 0).isActive = true NSLayoutConstraint(item: demoView, attribute: .bottom, relatedBy: .equal, toItem: view, attribute: .bottom, multiplier: 1.0, constant: 0).isActive = true NSLayoutConstraint(item: demoView, attribute: .top, relatedBy: .equal, toItem: view, attribute: .top, multiplier: 1.0, constant: 0).isActive = true }
- 3 回答
- 0 關注
- 644 瀏覽
添加回答
舉報