現(xiàn)在做的一個
iOS
的webApp犀忱,使用WKWebView
進行使用拣展。但在適配是坡垫,之前使用autoresizing
進行簡單的適配梭灿,顯示的是正常的,但到了iPhone X的適配上卻出現(xiàn)了問題(safa area
冰悠,齊劉海是什么鬼)堡妒。
最開始的想法是使用宏定義進行適配,但后來試了試溉卓,感覺好麻煩的說皮迟。后來實在是忍不了了,想起了
mesonry
(之前有看新浪的新聞?wù)fmesonry
要開始棄用了桑寨,所以一開始是拒絕的)伏尼,然后進行了簡單的適配,發(fā)現(xiàn)確實是特簡單(我只用了WKWebView
和UIProgressView
西疤,約束很少烦粒,而且不用怎么更新)。
廢話不多說了代赁,上代碼
/** 之前使用AutoresizingMask進行約束 */
- (void)setUIFrameWithAutoresizing {
[self.view addSubview:self.webView];
// 使用AutoresizingMask進行適配,和父視圖等寬登高以便保持和父視圖上兽掰、下芭碍、左、右的邊距不變
[self.webView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
// 設(shè)置如果需要就更新約束
[self.webView setTranslatesAutoresizingMaskIntoConstraints:YES];
[self.webView addSubview:self.progressView];
self.progressView.frame = CGRectMake(0, 0, screenW, 5);
}
/** 現(xiàn)在使用Masonry進行約束 */
- (void)setUIFrameWithMasonry {
// 需要在block里面操作孽尽,所以先將 self 設(shè)為弱指針
__weak typeof(self)weakSelf = self;
// 添加webView到當(dāng)前視圖上(使用masonry需要先添加到父視圖上才可以窖壕,不然會崩潰)
[self.view addSubview:self.webView];
// 設(shè)置webView 的 masonry 約束
[self.webView mas_makeConstraints:^(MASConstraintMaker *make) {
// iOS 11 適配(iPhoneX最低都是iOS 11)
if (@available(iOS 11.0, *)) {
// 設(shè)置頂部和底部 與 safeArea 相同(貼合)
make.top.equalTo(weakSelf.view.mas_safeAreaLayoutGuideTop);
make.bottom.equalTo(weakSelf.view.mas_safeAreaLayoutGuideBottom);
} else {
// 設(shè)置頂部 與 父視圖(view)向下便宜20個像素
make.top.equalTo(weakSelf.view.mas_top).with.offset(20);
// 設(shè)置底部與俯視圖貼合
make.bottom.equalTo(weakSelf.view.mas_bottom);
}
// 設(shè)置左邊距和右邊距 與 父視圖相同(貼合)
make.left.equalTo(weakSelf.view.mas_left);
make.right.equalTo(weakSelf.view.mas_right);
}];
// 設(shè)置progress的 masonry 約束 (需要注意的是父視圖webview是已經(jīng)加載并約束完的,不然會報錯)
[self.webView addSubview:self.progressView];
[self.progressView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(weakSelf.webView.mas_top);
make.width.equalTo(weakSelf.webView.mas_width);
// 設(shè)置高度為3個像素
make.height.mas_equalTo(@3);
}];
}
這只是我自己使用的簡單的約束,具體的masonry
可以自行百度查看mesonry
的詳解(我喜歡將progress
設(shè)置在webView
上瞻讽,這樣不論怎么樣都比較適配)鸳吸。
現(xiàn)在在做webApp的項目,之后可能會將項目的demo上傳到我的github速勇。歡迎先來觀看下載晌砾。