设置navigationBar和tabBar为不透明

用Xcode新建工程的时候,会发现self.view.frame和屏幕的尺寸是一样的,这就使得添加到self.view上的子控件会发生问题。

  • 原因:iOS7.1以后,默认navigationBar是半透明的,使得self.vieworigin是从屏幕左上角开始的(就是(0,0))。
  • 方法:设置 navigationBar 为不透明
self.navigationController.navigationBar.translucent = NO; 

这样self.vieworigin是从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;

你可能感兴趣的:(设置navigationBar和tabBar为不透明)