Я установил 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)
?
@ViralSavaj navigationBar Свойство NavigationController - только для чтения. (@property (nonatomic, readonly) UINavigationBar * navigationBar), мы не можем self.navigationController.navigationBar = customNavigatioBar; –
Ваш взглядКоманд контроллера ** IS ** изменится, если UINavigationBar имеет высоту (из 64). Работайте с 'view.bounds' вместо –
@JingLiangWen, вы можете проверить ответ для получения вашего self.view.orgin до (0,0). –