OC设置导航栏图片导致View偏移的问题

问题:

Paste_Image.png
  • 当我通过这个方法设置了导航栏背景图片后出现的问题
+ (void)initialize
{
 UINavigationBar *bar = [UINavigationBar appearance]; 
// 背景图片
 [bar setBackgroundImage:[UIImage imageNamed:@"navBarBJImg"] forBarMetrics:UIBarMetricsDefault];
}

在view中打印下View.frame

- (void)viewDidLoad
 {
 [super viewDidLoad]; 
NSLog(@"%@", NSStringFromCGRect(self.view.frame)); 
// 打印结果 {{0, 0}, {375, 667}}
}
- (void)viewDidAppear:(BOOL)animated
{
 [super viewDidAppear:animated]; 
NSLog(@"2== %@", NSStringFromCGRect(self.view.frame)); 
// 打印结果 2== {{0, 64}, {375, 603}}}

解决

  • 我的猜测:设置了一张不透明的背景图为导航栏背景图,view往下偏移64是因为导航栏的透明度变为NO导致的
  • 验证:我们在设置完图片后,手动在将导航栏的透明度置为yes,猜测结果:这时候view将不再偏移
+ (void)initialize
{
 UINavigationBar *bar = [UINavigationBar appearance]; 
// 背景图片
 [bar setBackgroundImage:[UIImage imageNamed:@"navBarBJImg"] forBarMetrics:UIBarMetricsDefault];
 [bar setTranslucent:YES];
}
Paste_Image.png
  • 结论:猜测成立,所以我们不能使用不透明图片作为导航栏背景图
    demo地址
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,861评论 25 708
  • 今天,于我是一个神圣且伟大的日子。第一次为自己的勇敢去投资,去买单。落笔签字的那一刹那,似乎,看见那个勇敢奔跑向前...
    行走的蓝天白云阅读 259评论 1 1
  • 一 燕子终于到家了。这天,正值小年腊月二十三的中午。 农历的年,才真正叫年。小都市的街道已经充满了年味。尽管雪花还...
    清风徐来_549b阅读 561评论 0 7
  • 今天的聚会出乎意料,居然可以跳出自己生活的圈子。 我们的主题是由《活出自己的女人味》这本书而得来的,巧的是居然三个...
    by_10阅读 160评论 0 0
  • 感情就是她喜欢他,他喜欢她,她喜欢她。就没有个他喜欢她,她正好也喜欢他?有句话这一生烂肚子里吧。我很开心,这一切都...
    唯有璇阅读 219评论 0 0