2015-06-03 1 views
3

Я установил Custom navigationBar by KVO в iOS8, а пользовательский navigationBar setBackgroundImage.Просмотреть смещение на Custom navigationBar setBackgroundImage

Я обнаружил, что viewContoller.view.frame.origin.y - это 64, а viewController - это rootViewController для навигации.

Почему viewContoller.view.frame.origin.y является 64-м в iOS 8?

следующее демо-код:

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UINavigationBar *temp = [[UINavigationBar alloc]init]; 
    [temp setBackgroundImage:[UIImage imageNamed:@"navbar_bg"] forBarMetrics:UIBarMetricsDefault]; 
    [self.navigationController setValue:temp forKey:@"navigationBar"]; 
} 

- (void)viewDidAppear:(BOOL)animated 
{ 

    NSLog(@"view : %@",self.view); // print :<UIView: 0x7ff8fa72cfa0; frame = (0 64; 375 603); autoresize = RM+BM; layer = <CALayer: 0x7ff8fa72b2b0>> 
} 

Если я отменю [temp setBackgroundImage:[UIImage imageNamed:@"navbar_bg"] forBarMetrics:UIBarMetricsDefault];, то view.origin.y является 0 правильно.

что я должен сделать правильно, чтобы установить пользовательский navigationBar который установилBackgroundImage и сохранить self.view.orgin is (0,0)?

+0

@ViralSavaj navigationBar Свойство NavigationController - только для чтения. (@property (nonatomic, readonly) UINavigationBar * navigationBar), мы не можем self.navigationController.navigationBar = customNavigatioBar; –

+0

Ваш взглядКоманд контроллера ** IS ** изменится, если UINavigationBar имеет высоту (из 64). Работайте с 'view.bounds' вместо –

+0

@JingLiangWen, вы можете проверить ответ для получения вашего self.view.orgin до (0,0). –

ответ

0

Вы можете установить заголовок navigationController.navigationItem вместо настройки UINavigationBar и с KVO.

- (void)viewDidLoad { 

    [super viewDidLoad]; 

    UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"navbar_bg"]]; 
    //Here you can create your own Custom View and provide as title of self.navigationController.navigationItem 
    [self.navigationController.navigationItem setTitleView:img]; 
} 

- (void)viewDidAppear:(BOOL)animated 
{ 

    NSLog(@"view : %@",self.view); // print :<UIView: 0x79ea0a30; frame = (0 0; 375 603); autoresize = W+H; layer = <CALayer: 0x79ea0ac0>> 
}