iOS 12自定义导航栏位于iPhone XR和iPhone 8的状态栏中

问题描述

我正在使用以下代码传递URL,并在WKWebview中显示该URL。我没有使用情节提要板,而没有以编程方式创建所有内容,而是在按钮单击事件上以模态形式显示视图控制器。我还使用自定义导航栏显示标题和“返回”按钮。一切工作正常,但是在某些情况下,自定义导航栏如何向上移动并被状态栏覆盖(如iPhone X,iPhone XR等高端设备),同样的情况也适用于iPhone 8,iPhone 7(如带有主页按钮的设备)。以下是iPhone 8的屏幕截图:

iPhone 8 screenshot

下面是传递URL的代码,并且在单击按钮时显示了视图控制器。自定义导航栏位于viewWillAppear代码内部

#import "KonyWebViewController.h"
#import <WebKit/WebKit.h>

@interface KonyWebViewController ()<WKNavigationDelegate,WKUIDelegate>{
WKWebView *_konyWebLoader;
}

@end

@implementation KonyWebViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    _konyWebLoader = [[WKWebView alloc] initWithFrame:CGRectMake(0,55,self.view.frame.size.width,self.view.frame.size.height)];
    [_konyWebLoader setAutoresizingMask: UIViewAutoresizingFlexibleWidth];
    NSURL *url = [NSURL URLWithString: self.productURL];
    NSURLRequest *urlReq = [NSURLRequest requestWithURL:url];
    NSLog(@"Product URL%@",_productURL);
    NSLog(@"TItle%@",_titleName);
    [_konyWebLoader loadRequest:urlReq];
    [self.view addSubview:_konyWebLoader];
    
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

-(void) viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    UINavigationBar *myNav = [[UINavigationBar alloc]initWithFrame:CGRectMake(0,50)];
    [myNav setAutoresizingMask: UIViewAutoresizingFlexibleWidth];
    [UINavigationBar appearance].barTintColor = [UIColor whiteColor];
    
    [self.view addSubview:myNav];

    UIBarButtonItem *cancelItem = [[UIBarButtonItem alloc] initWithTitle:@"Back"
                                                                   style:UIBarButtonItemStyleBordered
                                                                  target:self
                                                                  action:@selector(backButtonClicked)];

    UINavigationItem *navigItem = [[UINavigationItem alloc] initWithTitle:_titleName];
    
    navigItem.leftBarButtonItem = cancelItem;
    myNav.items = [NSArray arrayWithObjects: navigItem,nil];

    [UIBarButtonItem appearance].tintColor = [UIColor colorWithRed: 0.10 green: 0.53 blue: 0.84 alpha: 1.00];
}

- (void)backButtonClicked {
    NSLog(@"Executing backButtonClicked...");
    [self dismissViewControllerAnimated:YES completion:nil];
}
@end

我知道iPhoneX中状态栏的高度是44,而不是20 在iPhone 8类(带主页按钮)和iPhone X类(不带主页按钮)的情况下,如何防止重叠并向下移动导航栏?请注意,我只想更改此视图控制器的位置,因为我不想影响整个应用程序

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...