情景再现:产品说程序启动的时候要根据服务器的配置显示一个按钮(神马,动态添加按钮,在原有的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挡住了
不见的按钮.pngCGRectMake(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.
网友评论