Navigation bar的注意事项详解

Navigation bar的注意事项详解

本文主要介绍了导航栏的注意事项。具有一定的参考价值,下面跟着小编一起来看下吧

条形按钮项目使用按钮作为自定义视图,初始化我已启用为假的,注意顺序

需要设置 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 的位置不变。

如果需要改变导航栏是透明的属性,就要考虑对其他视角会不会有影响,是否使用约束来定位。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我们!

Navigation bar的注意事项详解