iOS - 自定义 xib View 自动调整高度
在iOS开发过程中,我们经常需要自定义视图,视图的内容一般都是固定的提示,包含一些文字、按钮等等。当需要显示的时候,一般需要固定视图的大小,不需要根据屏幕大小做调整,不论是在屏幕较小的手机上,还是在屏幕较大的iPad上面,显示都需要效果一样。
比如我们需要在屏幕中间弹出以下提示框:
以上弹出框在低分辨率的手机上显示没有问题,但是在高分辨率的时候就会出现问题,登录按钮被遮挡,原因就是由于第二个设备的分辨率较高,而我们显示视图的时候是会指定视图大小,在不同分辨率的屏幕上就会显示高度不同,导致到分辨率设备显示不全
以上视图是在xib中设计的,视图中的控件位置和大小都是通过约束设置的,设计的时候每个设备都没有问题,不会出现遮挡问题;在视图中,最底下的登录按钮并没有设置底部约束,如果通过设置底部约束,可以避免登录按钮显示在视图范围内,但是会遮挡中间的文字,所以我们有必要在视图显示时调整视图大小。
那么我们在哪里调整视图大小呢?在 layoutSubviews 中根据登录按钮的底部位置和高度调整当前视图的高度:视图高度 = self.signInButton.frame.origin.y + self.signInButton.frame.size.height + 16.0,具体代码如下:
override func layoutSubviews() { super.layoutSubviews() // 调整视图大小 self.frame = CGRect.init(x: self.frame.origin.x, y: self.frame.origin.y, width: self.frame.size.width, height: self.signInButton.frame.origin.y + self.signInButton.frame.size.height + 16.0) }
通过以上代码即可调整视图的大小,使得视图显示正常。
自律 平静 思考 实践
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端