3 回答
TA贡献1830条经验 获得超3个赞
我想提一下safeAreaLayoutGuide
UIView
-viewDidAppear:
表示视图中不被条形条和其他内容遮掩的部分的布局指南。 当视图在屏幕上可见时,本指南反映了导航栏、选项卡条、工具栏和其他祖先视图未涵盖的视图部分。(在tvOS中,安全区反映没有覆盖屏幕边框的区域。) 如果视图当前未安装在视图层次结构中,或尚未在屏幕上显示,则布局指南边缘与视图边缘相等。.
(强调地雷)
-viewDidLoad:
layoutFrame
{{0, 0}, {375, 812}}
{{0, 44}, {375, 734}}
TA贡献1872条经验 获得超3个赞
早些时候在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 关注
- 594 浏览
添加回答
举报