用Xcode新建工程的时候,会发现self.view.frame和屏幕的尺寸是一样的,这就使得添加到self.view上的子控件会发生问题。
- 原因:iOS7.1以后,默认
navigationBar是半透明的,使得self.view的origin是从屏幕左上角开始的(就是(0,0))。 - 方法:设置
navigationBar为不透明
self.navigationController.navigationBar.translucent = NO;
这样self.view的origin是从navigationBar下面开始的(就是(0,20+44))。也就是说self.view的(0,0)位置,就是相对屏幕来说的点(0,20+44)。
运行发现:navigationBar下面有条白色细线
其实这是navigationBar的阴影,默认是一个像素的白线。
[[UINavigationBar appearance] setShadowImage:[UIImage new]];
经过上面的修改后,发现白线都消失了,除了navigationBar下面接着searchBar的情况。又经过一番查找,发现是searchBar顶部有个叫hairline的线,改进了一下刚才的代码:
[[UINavigationBar appearance] setShadowImage:[UIImage imageWithColor:[UIColor colorWithHexString:@"4290cc"] size:CGSizeMake(320, 1)]];
同理,设置tabBar为不透明
_tabBarVC.tabBar.translucent = NO;