美文网首页
使用 IB 结合代码兼容 iOS 8 以上 设置 WKWebVi

使用 IB 结合代码兼容 iOS 8 以上 设置 WKWebVi

作者: 栎千 | 来源:发表于2018-01-28 14:19 被阅读6次

    Xcode 9 上,在 IB 里终于可以使用 WKWebView 了,但是如果你的项目的 deploy target 设置的是 iOS 11 以下, 就会发现 iOS 11 以下不支持使用 WKWebView 的 initWithCoder 方法(IB 初始化时调用的方法)。
    所以如果你的项目想要支持到 iOS 8 以上,仍然需要使用代码初始化。

    注意:

    • 我把 progressView 的 Style 属性在 IB 里设置成了 Bar
    • 如果你不想使用 Masonry 和 RAC,可以用 VFL 和 KVO 修改相应部分的代码
    • 我把 RAC 看作 OC 和 CocoaTouch 的一部分,所以直接放到了 pch 文件里
    #import "GuideViewController.h"
    #import <WebKit/WebKit.h>
    #import <Masonry/Masonry.h>
    
    @interface GuideViewController ()
    
    @property (nonatomic, strong) WKWebView *webView;
    @property (nonatomic, weak) IBOutlet UIProgressView *progressView;
    
    @end
    
    @implementation GuideViewController
    
    - (instancetype)initWithCoder:(NSCoder *)aDecoder {
        self = [super initWithCoder:aDecoder];
        if (self) {
            self.webView = [[WKWebView alloc] init];
        }
        return self;
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        // 界面布局
        [self.view addSubview:self.webView];
        [self.webView mas_makeConstraints:^(MASConstraintMaker *make) {
            make.edges.equalTo(self.view);
        }];
        [self.view bringSubviewToFront:self.progressView];
        
        // 开始监听加载进度
        @weakify(self);
        [RACObserve(self.webView, estimatedProgress) subscribeNext:^(NSNumber *progress) {
            @strongify(self);
            [self.progressView setProgress:progress.floatValue animated:YES];
            if ([progress isEqual: @1]) {
                dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.35 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                    self.progressView.progress = 0;
                });
            }
        }];
        
        // 发起请求
        NSURL *url = [NSURL URLWithString:@"https://www.baidu.com"];
        [self.webView loadRequest:[NSURLRequest requestWithURL:url]];
    }
    

    相关文章

      网友评论

          本文标题:使用 IB 结合代码兼容 iOS 8 以上 设置 WKWebVi

          本文链接:https://www.haomeiwen.com/subject/rraaaxtx.html