用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;