本文主要介绍了导航栏的注意事项。具有一定的参考价值,下面跟着小编一起来看下吧
条形按钮项目使用按钮作为自定义视图,初始化我已启用为假的,注意顺序
需要设置 bar button item 的 custom view 为 button,但一开始 isEnabled 要为 false。
生成一个按钮
let left button=ui button(frame:CGRect(x:0,y: 0,宽度:80,高度:44))
左键。settitle颜色(用户界面颜色。绿色,用于:正常)
左键。settitle颜色(用户界面颜色。红色,代表:已禁用)
leftButton.setTitle('Enabled ',for:正常)
leftButton.setTitle('Disabled ',用于:已禁用)
leftButton.addTarget(self,action:# selector(单击了左键(_:)),for:touchUpInside)
如果先设置我已启用,后设置条形按钮项目
leftButton.isEnabled=false
导航项目。leftbarbuttonitem=UIBarButtonItem(自定义视图:左按钮)
结果我已启用还是真实的
正确的顺序
导航项目。leftbarbuttonitem=UIBarButtonItem(自定义视图:左按钮)
leftButton.isEnabled=false //或导航项目。leftbarbuttonitem?isEnabled=false
结果我已启用是错误的
改变 navigation bar isTranslucent 属性会改变 view 的坐标
放置两个标签。其中,框架标签没有添加约束(NSLayoutConstraint),约束标签左、右、下都有约束,与视角相接。
设置右上角按钮动作
导航项目。rightbarbuttonitem=UIBarButtonItem(标题:'更改,样式:普通,目标:自身,操作:#选择器(单击了右键(_:))
改变导航栏是透明的属性,显示标签的坐标
@ objc private func右键点击(_ sender:any object){
navigationController?navigationBar.isTranslucent=!导航控制器!navigationBar.isTranslucent
updateLabelContent()
}
private func updateLabelContent(){
title=navigationController!navigationBar.isTranslucent?' Translecent ':'不透明'
让frameLabelOrigin=框架标签。框架。起源
frameLabel.text='框架标签' x=\(frameLabelOrigin.x),y=\(frameLabelOrigin.y)'
设constraintLabelOrigin=约束标签。框架。起源
constraintLabel.text='约束标签' x=\(constraintLabelOrigin.x),y=\(constraintLabelOrigin.y)'
打印(' \(标题)')
打印('状态栏框架:',ui应用程序。分享。状态栏框架)//(0.0,0.0,375.0,20.0)
打印('导航栏框架:',navigationController!navigationBar.frame) //(0.0,20.0,375.0,44.0)
}
通过点击右上角按钮,来查看变化。
透明时
不透明时
视图控制器的视角坐标改变,状态栏和导航栏的坐标不变
Navigation bar 从不透明变透明,status bar 和 navigation bar 的坐标都不变。整个 view 下移64,高度减小64,不会超出 window。没加约束的 frameLabel 坐标不变,但相对 window 的位置随着 view 一起下移。添加约束的 constraintLabel 的坐标改变,但是相对 window 的位置不变。
如果需要改变导航栏是透明的属性,就要考虑对其他视角会不会有影响,是否使用约束来定位。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。