本文主要介绍了导航栏的注意事项。具有一定的参考价值,下面跟着小编一起来看下吧
条形按钮项目使用按钮作为自定义视图,初始化我已启用为假的,注意顺序
需要设置 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 的位置不变。
如果需要改变导航栏是透明的属性,就要考虑对其他视角会不会有影响,是否使用约束来定位。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我们!