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挡住了

NavigationBar的占位问题_第1张图片
不见的按钮.png

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

解决方案:

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

结果如下图:


NavigationBar的占位问题_第2张图片
出现的按钮.png

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

你可能感兴趣的:(NavigationBar的占位问题)