顶部栏在不安全区域重叠
top bar overlapping in unsafe area
由于安全区域,我的顶部栏在除 iPhoneX 以外的所有其他 iPhone 中工作正常 introduction.The 顶部栏从不安全区域开始 itself.The 顶部栏是自定义的 UI.It 如下所示:
代码如下:
//Top Bar
let topBar = UIView(frame:CGRect(x: 0,y: 0, width: width, height: 60))
topBar.backgroundColor = UIColor.white
topBar.layer.shadowColor = UIColor.gray.cgColor
topBar.layer.shadowOffset = CGSize(width: 0, height: 3)
topBar.layer.shadowOpacity = 1
topBar.layer.masksToBounds = false
topBar.layer.shadowRadius = 8.0;
self.view.addSubview(topBar)
我该如何修复 this.I 希望视图从安全的地方开始 area.And 我不想使用 UINavigationBar.Thanks.
使用自动布局和布局指南构建您的 UI。例如,使用 SnapKit。
let topBar = UIView(frame:CGRect(x: 0,y: 0, width: width, height: 60))
topBar.snp.makeConstraints { make in
make.top.equalTo(self.view.safeAreaLayoutGuide.snp.top)
make.leading.trailing.equalToSuperview()
}
更新
重写原作api。
let topBar = UIView(frame:CGRect(x: 0,y: 0, width: 30, height: 60))
self.view.addSubview(topBar)
let top = NSLayoutConstraint.init(item: topBar, attribute: .top, relatedBy: .equal, toItem: self.view.safeAreaLayoutGuide, attribute: .top, multiplier: 1.0, constant: 0.0)
let leading = NSLayoutConstraint.init(item: topBar, attribute: .leading, relatedBy: .equal, toItem: self.view, attribute: .leading, multiplier: 1.0, constant: 0.0)
let trailing = NSLayoutConstraint.init(item: topBar, attribute: .trailing, relatedBy: .equal, toItem: self.view, attribute: .trailing, multiplier: 1.0, constant: 0.0)
let height = NSLayoutConstraint.init(item: topBar, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1.0, constant: 50.0)
topBar.addConstraints([top, leading, trailing, height])
And I don't want to use UINavigationBar
你想要什么并不重要。无论如何你需要。您违反了界面准则,现在您因此而陷入困境。做苹果想让你做的事。如果配置正确,UINavigationBar 能够自动向上伸展到 "notch" 后面。底部的 UIToolbar 也是如此。你需要使用这些。
由于安全区域,我的顶部栏在除 iPhoneX 以外的所有其他 iPhone 中工作正常 introduction.The 顶部栏从不安全区域开始 itself.The 顶部栏是自定义的 UI.It 如下所示:
代码如下:
//Top Bar
let topBar = UIView(frame:CGRect(x: 0,y: 0, width: width, height: 60))
topBar.backgroundColor = UIColor.white
topBar.layer.shadowColor = UIColor.gray.cgColor
topBar.layer.shadowOffset = CGSize(width: 0, height: 3)
topBar.layer.shadowOpacity = 1
topBar.layer.masksToBounds = false
topBar.layer.shadowRadius = 8.0;
self.view.addSubview(topBar)
我该如何修复 this.I 希望视图从安全的地方开始 area.And 我不想使用 UINavigationBar.Thanks.
使用自动布局和布局指南构建您的 UI。例如,使用 SnapKit。
let topBar = UIView(frame:CGRect(x: 0,y: 0, width: width, height: 60))
topBar.snp.makeConstraints { make in
make.top.equalTo(self.view.safeAreaLayoutGuide.snp.top)
make.leading.trailing.equalToSuperview()
}
更新
重写原作api。
let topBar = UIView(frame:CGRect(x: 0,y: 0, width: 30, height: 60))
self.view.addSubview(topBar)
let top = NSLayoutConstraint.init(item: topBar, attribute: .top, relatedBy: .equal, toItem: self.view.safeAreaLayoutGuide, attribute: .top, multiplier: 1.0, constant: 0.0)
let leading = NSLayoutConstraint.init(item: topBar, attribute: .leading, relatedBy: .equal, toItem: self.view, attribute: .leading, multiplier: 1.0, constant: 0.0)
let trailing = NSLayoutConstraint.init(item: topBar, attribute: .trailing, relatedBy: .equal, toItem: self.view, attribute: .trailing, multiplier: 1.0, constant: 0.0)
let height = NSLayoutConstraint.init(item: topBar, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1.0, constant: 50.0)
topBar.addConstraints([top, leading, trailing, height])
And I don't want to use UINavigationBar
你想要什么并不重要。无论如何你需要。您违反了界面准则,现在您因此而陷入困境。做苹果想让你做的事。如果配置正确,UINavigationBar 能够自动向上伸展到 "notch" 后面。底部的 UIToolbar 也是如此。你需要使用这些。