设置navigationController.navigationBar的宽度问题

ttpsan550 2015-05-19 09:51:27
改变了navigationBar 的默认宽度,
1、在 -(void)viewDidAppear:(BOOL)animated 中设置了 frame能够正常显示,但是从主屏切换到app时,navigationBar的宽度又回变成屏幕的宽度,于是 通过一个 通知来监听 回到app的事件 来改变frame, 也能够实现 ,但是有一个小细节不完美,就是在从主屏切回app时 能看到 navigationBar 的宽度改变的动画,台不和谐了。

问问 有没有 方法 可以设置 navigationBar 从主屏切换回 app时 调用自定义的 frame 而不是系统默认的frame。
...全文
153 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttpsan550 2015-05-19
  • 打赏
  • 举报
回复
谢谢,方法1 完美解决,哈哈,为啥 我当时 就只能想到方法2 ,然后行不通, 然后就各种找其它属性了
ttpsan550 2015-05-19
  • 打赏
  • 举报
回复
引用 1 楼 zhangao0086 的回复:
从主屏切换回 app 的时候,那是系统用一张截图在做动画。 我建议你做一个真正的改变宽度的 NavigationBar,有两个方式: 1. 自定义 NavigationController,然后重写 viewDidLayoutSubviews 方法,把 NavigationBar 的宽度改你想要的 2. 自定义 NavigationBar,还是重写 layoutSubviews 方法,自己改变自己的宽度,然后用这个构造器去初始化 NavigationController: - (instancetype)initWithNavigationBarClass:(Class)navigationBarClass toolbarClass:(Class)toolbarClass; 初始化成功后,用 setViewControllers 设置导航栈。 这两种方式都是从根本上改变 NavigationBar 的宽度。 ps:你也可以尝试获取 Controller 为 NavigationBar 创建的宽度约束,但是这种方式不一定兼容旧的版本
谢谢 大大及时回复, 方法2 不可行,NavigationBar是readonly的。 我马上试试方法1 和3
Bannings 2015-05-19
  • 打赏
  • 举报
回复
从主屏切换回 app 的时候,那是系统用一张截图在做动画。 我建议你做一个真正的改变宽度的 NavigationBar,有两个方式: 1. 自定义 NavigationController,然后重写 viewDidLayoutSubviews 方法,把 NavigationBar 的宽度改你想要的 2. 自定义 NavigationBar,还是重写 layoutSubviews 方法,自己改变自己的宽度,然后用这个构造器去初始化 NavigationController: - (instancetype)initWithNavigationBarClass:(Class)navigationBarClass toolbarClass:(Class)toolbarClass; 初始化成功后,用 setViewControllers 设置导航栈。 这两种方式都是从根本上改变 NavigationBar 的宽度。 ps:你也可以尝试获取 Controller 为 NavigationBar 创建的宽度约束,但是这种方式不一定兼容旧的版本

29,027

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧