1.WKWebview加載html文本圖片過大,沒有自適應屏幕寬高。
在用Webview加載html文本有時候會遇到加載的圖片過大,不能自適應屏幕寬高的問題。那么如何解決這個問題?如何使圖片自適應屏幕?很簡單,只需要加一個js就可以。
直接上代碼:
- (WKWebView *)detailWeb {if (!_detailWeb) {NSString *jScript = @"var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta); var imgs = document.getElementsByTagName('img');for (var i in imgs){imgs[i].style.maxWidth='100%';imgs[i].style.height='auto';}";WKUserScript *wkUScript = [[WKUserScript alloc] initWithSource:jScript injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES];WKUserContentController *wkUController = [[WKUserContentController alloc] init];[wkUController addUserScript:wkUScript];WKWebViewConfiguration *wkWebConfig = [[WKWebViewConfiguration alloc] init];wkWebConfig.userContentController = wkUController;_detailWeb = [[WKWebView alloc] initWithFrame:CGRectMake(0, AdaptedWidth(40), SCREEN_WIDTH, SCREEN_HEIGHT-TopNavHeight-AdaptedWidth(40)) configuration:wkWebConfig];_detailWeb.backgroundColor = [UIColor whiteColor];_detailWeb.navigationDelegate = self;}return _detailWeb; }
2.scrollview使用Masnory自動布局
近期在項目中使用了Masnory。在一個關于我們的頁面由于數據網絡請求下來,且內容長度不一定,我就決定使用Masnory+ScrollView來實現。結果就出現了一些些問題,scrollview就是不能滑動。后來研究解決了。
注意:個人覺得使用masnory就是和在xib、storyboard中設置一樣,缺什么約束就寫什么約束。
使用過程就在代碼里顯示。
#import "ViewController.h"#import "Masonry/Masonry.h"@interface ViewController ()@property (nonatomic, strong) UIScrollView *scrollView;@property (nonatomic, strong) UIView *scrollContentView;@property (nonatomic, strong) UILabel *titleLabel; @property (nonatomic, strong) UILabel *subLabel;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];self.view.backgroundColor = [UIColor whiteColor];self.title = @"1";// 1.把scrollView添加到控制器view [self.view addSubview:self.scrollView];[self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) {make.edges.equalTo(self.view);}];// 2.給scrollView添加一個containerView// 重點 唯一 大小貼合scrollview// 即scrollView的子視圖,即過渡視圖contentSize,并設置其約束 [self.scrollView addSubview:self.scrollContentView];[self.scrollContentView mas_makeConstraints:^(MASConstraintMaker *make) {// 注意點:首先確定contentView的位置。如果上下滑動等寬 左右滑動等高 類似于xib make.left.top.right.bottom.equalTo(self.scrollView);make.width.equalTo(self.scrollView);}];// 3.此后所有視圖添加在scrollContentView上 [self.scrollContentView addSubview:self.titleLabel];[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {// 注意點這里面設置子視圖都要添加在contentView上 必須注意make.left.equalTo(self.scrollContentView.mas_left).offset(20);make.right.equalTo(self.scrollContentView.mas_right).offset(-20);make.top.equalTo(self.scrollContentView.mas_top).offset(100);make.height.mas_equalTo(40);}];[self.scrollContentView addSubview:self.subLabel];[self.subLabel mas_makeConstraints:^(MASConstraintMaker *make) {make.left.equalTo(self.scrollContentView.mas_left).offset(20);make.right.equalTo(self.scrollContentView.mas_right).offset(-20);make.top.equalTo(self.titleLabel.mas_bottom).offset(40);// 這個可寫在這個位置 也可以在網絡請求結束后添加make.bottom.equalTo(self.scrollContentView.mas_bottom).offset(-100);}];// 模擬網絡請求dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{self.subLabel.text = @"精雕機哦跌跤就疊加偶家迪歐家餓哦就掉得哦啊基金的年紀大遞交炯炯都我阿爾加到的驕傲的 待機餓哦案件都安靜哦啊接打帶哦接啊哦啊接待偶爾接愛哦的舊愛帶哦精雕機帶偶覺得 基調而驕傲的奧迪偶記帶哦精雕機哦跌跤就疊加偶家迪歐家餓哦就掉得哦啊基金的年紀大遞交炯炯都我阿爾加到的驕傲的 待機餓哦案件都安靜哦啊接打帶哦接啊哦啊接待偶爾接愛哦的舊愛帶哦精雕機帶偶覺得 基調而驕傲的奧迪偶記帶哦精雕機哦跌跤就疊加偶家迪歐家餓哦就掉得哦啊基金的年紀大遞交炯炯都我阿爾加到的驕傲的 待機餓哦案件都安靜哦啊接打帶哦接啊哦啊接待偶爾接愛哦的舊愛帶哦精雕機帶偶覺得 基調而驕傲的奧迪偶記帶哦精雕機哦跌跤就疊加偶家迪歐家餓哦就掉得哦啊基金的年紀大遞交炯炯都我阿爾加到的驕傲的 待機餓哦案件都安靜哦啊接打帶哦接啊哦啊接待偶爾接愛哦的舊愛帶哦精雕機帶偶覺得 基調而驕傲的奧迪偶記帶哦精雕機哦跌跤就疊加偶家迪歐家餓哦就掉得哦啊基金的年紀大遞交炯炯都我阿爾加到的驕傲的 待機餓哦案件都安靜哦啊接打帶哦接啊哦啊接待偶爾接愛哦的舊愛帶哦精雕機帶偶覺得 基調而驕傲的奧迪偶記帶哦精雕機哦跌跤就疊加偶家迪歐家餓哦就掉得哦啊基金的年紀大遞交炯炯都我阿爾加到的驕傲的 待機餓哦案件都安靜哦啊接打帶哦接啊哦啊接待偶爾接愛哦的舊愛帶哦精雕機帶偶覺得 基調而驕傲的奧迪偶記帶哦";// 在上面寫了這個位置可以不寫 最好不要都寫 會造成代碼混亂 // // 設置過渡視圖的底邊距(此設置將影響到scrollView的contentSize) // [self.scrollContentView mas_makeConstraints:^(MASConstraintMaker *make) { // make.bottom.equalTo(self.subLabel.mas_bottom).offset(30); // }]; });// Do any additional setup after loading the view, typically from a nib. }#pragma mark - Lazy Setter - (UIScrollView *)scrollView {if (!_scrollView) {_scrollView = [[UIScrollView alloc] init];_scrollView.backgroundColor = [UIColor greenColor];}return _scrollView; }- (UIView *)scrollContentView {if (!_scrollContentView) {_scrollContentView = [[UIView alloc] init];_scrollContentView.backgroundColor = [UIColor redColor];}return _scrollContentView; }- (UILabel *)titleLabel {if (!_titleLabel) {_titleLabel = [[UILabel alloc] init];_titleLabel.text = @"title";_titleLabel.textColor = [UIColor blackColor];_titleLabel.backgroundColor = [UIColor whiteColor];_titleLabel.font = [UIFont systemFontOfSize:16];_titleLabel.numberOfLines = 1;}return _titleLabel; }- (UILabel *)subLabel {if (!_subLabel) {_subLabel = [[UILabel alloc] init];_subLabel.textColor = [UIColor blackColor];_subLabel.backgroundColor = [UIColor whiteColor];_subLabel.font = [UIFont systemFontOfSize:16];_subLabel.numberOfLines = 0;}return _subLabel; }@end
參考:博客一、博客二。
3.設置label的最小字體。
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(30, 100, 100, 30)];label.text = @"fjirfjirjfi積分敵人的積極對得金蝶雞的解決跌阿達啊打發 啊打發";label.adjustsFontSizeToFitWidth = YES;label.font = [UIFont systemFontOfSize:18];label.textColor = [UIColor blackColor]; // label.minimumFontSize = 14;label.minimumScaleFactor = 0.5;[self.view addSubview:label];
在6.0系統后minimumFontSize屬性已經被棄用。推薦使用minimumScaleFactor。
注意點:
? ? 1、0<minimumScaleFactor<1時才能達到效果。(字體10,想要最小字體5,設置0.5即可)
? ? 2、另外要設置adjustsFontSizeToFitWidth=YES.
? ? 3、還有需要UIlabel的行數是1的時候才有用,多行的label是不行的
? ? 4、minimumScaleFactor默認值是0,此時最小字體就是設置的字體大小,和1的效果一樣。