0

これを使用してナビゲーションバーを作成していますが、iPhoneXではセーフエリアビューのレイアウトが原因で壊れます

 navbar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, [UIApplication sharedApplication].keyWindow.rootViewController.view.frame.size.width, 50)];
    navItem = [[UINavigationItem alloc] initWithTitle:@"Title"];
    cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(onTapCancel:)];
    navItem.leftBarButtonItem = cancelBtn;
    [navbar setItems:@[navItem]];

ここに画像の説明を入力

iPhoneX をサポートするために、Objective-C でこれを行うにはどうすればよいでしょうか?

4

1 に答える 1

0

ナビゲーションバーを修正するための回避策は次のとおりです

- (void)viewDidLayoutSubviews{
    int start = self.view.safeAreaInsets.top;
       UINavigationBar * navbar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, start, [UIScreen mainScreen].bounds.size.width, 50)];
         navbar.prefersLargeTitles = YES;

       UINavigationItem*  navItem = [[UINavigationItem alloc] initWithTitle:@"Title"];

         [navbar setItems:@[navItem]];

         [self.view addSubview:navbar];

}
于 2020-02-26T16:15:45.983 に答える