创建的表格视图中的第一个单元格包含一个图像,我希望此图像与状态栏重叠,如下图所示。如何相应地创建NavigationBar?
尝试以下代码对我不起作用。
tableView.contentInset = UIEdgeInsets(top: -UIApplication.shared.statusBarFrame.size.height, left: 0, bottom: 0, right: 0)
也可以在安全区域和超级视野中玩耍,但是没有运气
更新:
现在已将superspace的顶部空间添加到tableview的-90约束中,图像在状态栏中可见,想知道这样做是正确的方法还是其他方法
发现由于导航控制器和导航栏的顶部顶部有空白空间,因此直到我将超级空间的顶部空间设置为-90后(是图像),它才起作用
在StoryBoard中,我可以检查导航项占用的顶部空白空间
答案 0 :(得分:3)
首先,调整与下图相同的约束:
然后使用三个按钮创建“俯视图/导航”视图,该视图应位于具有clear
背景色的桌面视图上方。与上图相同。并且该顶视图的top constraint
应该是top aligned
和safe area
。
将以下方法放入控制器:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.setNavigationBarHidden(true, animated: true)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.setNavigationBarHidden(false, animated: true)
}
现在,当您运行时,它将完全看起来像您想要的。
答案 1 :(得分:2)
您是否尝试过将最高约束不是附加到安全区域而是附加到超级视图?
您也可以尝试以下方法:
self.contentInsetAdjustmentBehavior = .never
答案 2 :(得分:2)
将tableview设置为顶部约束0到超级视图,并在viewDidLoad中使用以下代码:
tableView.contentInsetAdjustmentBehavior = .never
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true
self.view.backgroundColor = UIColor.clear
答案 3 :(得分:1)
将tableview.top的顶部约束添加到superview.top
答案 4 :(得分:1)
使tableview的顶部约束0成为超级视图并使导航栏透明。如果需要,请使用我制作的扩展名以使导航栏透明。
extension UINavigationController {
func transparent() {
self.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationBar.shadowImage = UIImage()
self.navigationBar.isTranslucent = true // set bartintColor if isTranslucent is false
self.view.backgroundColor = UIColor.clear
}
func nonTransparent() {
self.view.backgroundColor = UIColor.black.withAlphaComponent(0.75)
self.navigationBar.isTranslucent = false
self.navigationBar.barTintColor = UIColor.white
}
}
答案 5 :(得分:0)
您可以“模拟”导航栏并实现您的目标。
将tableView限制为superview.top 0
设置tableview.contentInsetsAdjustmentsBehavior = .never
在viewWillAppear上调用self.navigationController?.setNavigationBarHidden(true, animated: animated)
将后退按钮和其他项目放置在表格视图上方的导航栏中。可以使用tableView的超级视图,但不要忘记将其移到tableView上方。为他们使用最安全的区域,以便像放置在navigationBar中一样锁定。
注意:此操作将禁用向后导航的边缘平移手势。
答案 6 :(得分:0)
以创建该布局:
您必须将tableView固定到<div class="form-group col-xs-12 col-md-8">
<p-galleria [images]="images" panelWidth="200"
panelHeight="100" autoPlay="false"
(onImageClicked)="onImageClicked($event)"
[showCaption]="true"></p-galleria>
</div>
将contentInsetAdjustmentBehavior设置为从不view.TopAnchor
tableView.contentInsetAdjustmentBehavior = .never
设置navigationController的背景图像和阴影图像:
contentView.topAnchor
让我知道是否一切都很好。它必须工作