NavigationBar的占位问题

情景再现:产品说程序启动的时候要根据服务器的配置显示一个按钮(神马,动态添加按钮,在原有的xib上加好麻烦,代码直接添加好了)。

代码如下:

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];

button.backgroundColor = [UIColor redColor];

[button setTitle:@"next" forState:UIControlStateNormal];

[button addTarget:self action:@selector(next) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:button];

结果如下:发现右上角那块红色是按钮,但是被navigation挡住了

不见的按钮.png

CGRectMake(0, 0, 50, 50),为什么y轴坐标我要写0,是因为对于VC来说,它并不需要关心它是直接展示还是被嵌在navigation里面。

解决方案:

1、把y=0改成y=64,这样就能够显示在正确的位置了,但是坐标原点和习惯有点不一致,所有控件的y轴都要从64算起;
2、加上[self.navigationController.navigationBar setTranslucent:NO];

结果如下图:


出现的按钮.png

原因:从ios7开始Navigationbar默认不占位,修改translucent属性后即可占位。该字段的描述如下:
//New behavior on iOS 7.
//Default is YES.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容