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

问题:

OC设置导航栏图片导致View偏移的问题_第1张图片
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];
}
OC设置导航栏图片导致View偏移的问题_第2张图片
Paste_Image.png
  • 结论:猜测成立,所以我们不能使用不透明图片作为导航栏背景图
    demo地址

你可能感兴趣的:(OC设置导航栏图片导致View偏移的问题)