美文网首页
OC设置导航栏图片导致View偏移的问题

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

作者: 7dfa9c18c1d1 | 来源:发表于2016-08-18 15:30 被阅读340次

    问题:

    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地址

    相关文章

      网友评论

          本文标题:OC设置导航栏图片导致View偏移的问题

          本文链接:https://www.haomeiwen.com/subject/pjmvsttx.html