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的效果一样。

转载于:https://www.cnblogs.com/weicyNo-1/p/10123555.html

【iOS - 周总结】开发中遇到的小知识点(2018.12.10-2018.12.15)相关推荐

  1. Android开发中的一些小知识点记录(101-120)

    编写不易,如有转载,请声明出处:http://blog.csdn.net/zxc514257857/article/details/118554522 Android开发中的一些小知识点记录(1-20 ...

  2. iPhone开发中一些使用小技巧

    经过iphone开发,我发现在开发过程中最难的就是一些嘈杂的细节,而了解一些小技巧就会达到事半功倍的效果,下面我就总结一下在iphone开发中的一些小技巧. 1.如果在程序中想对某张图片进行处理的话( ...

  3. 记一次ios内购开发中踩的坑

    记一次ios内购开发中踩的坑 前段时间好不容易把APP中的非续期内购上架成功了,过程也是一波三折,各种问题,但最终还是内购审核通过了 通过后我以为就没问题了,但第二天打开xcode运行应用后,准备验证 ...

  4. 十大面试问题解惑,秒杀一切HR、技术面试。程序员必读! 最能体现求职者能力的就是面试,能不能拿到Offer,取决于你面试时的表现,只有有准备才能在面试过程中游刃有余。小编收集了10个面试官最爱提的问题

    十大面试问题解惑,秒杀一切HR.技术面试.程序员必读! 最能体现求职者能力的就是面试,能不能拿到Offer,取决于你面试时的表现,只有有准备才能在面试过程中游刃有余.小编收集了10个面试官最爱提的问题 ...

  5. 嵌入式开发中的C语言知识点

    嵌入式开发中的C语言知识点 1.关键字 2.数据类型 3.内存管理和存储架构 4.指针和数组 5.结构类型和对齐 6.预处理机制 1.关键字 几乎每一门语言中都有关键字,具有特殊功能,C语言也不例外, ...

  6. iphone开发中的一些小技

    在iPhone开发过程中,一些小技巧对开发工作有很大的帮助作用,所以以下内容收集了一些开发过程中的小技巧. 1.如果在程序中想对某张图片进行处理的话(得到某张图片的一部分)可一用以下代码:   UII ...

  7. JS开发中常用的小技巧

    1.获取指定范围内的随机数 1 2 3 function getRadomNum(min,max){     return  Math.floor(Math.random() * (max - min ...

  8. Cocos2d-JS开发中的一些小技巧(持续更新)

    1.获取URL中的请求参数的值----此方法接收参数名 1 2 3 4 5 6 function getQueryString(name) {     var reg = new RegExp(&qu ...

  9. 21 Qt中ui设计中的一些小知识点

    记录一下小细节,方便随时查看 Qt小知识点 1 改变布局中组件大小 2 QPixMap 加载显示图片 3 QTableWidget 常见用法 4 frame中嵌套Layout 1 改变布局中组件大小 ...

最新文章

  1. 实模式和保护模式区别及寻址方式
  2. 如何编写一个Jquery插件
  3. dubbo k8s 服务发现_服务化改造实践(二)| Dubbo + Kubernetes
  4. Android开发系列(二十八):使用SubMenu创建选项菜单
  5. CodeForces 258D Little Elephant and Broken Sorting(期望)
  6. 渗透专用linux镜像,安装DVWA渗透环境到CentOS7系统中(附百度云ova镜像下载)-Go语言中文社区...
  7. 探索 OpenStack 之(7):Neutron 深入探索之 Open vSwitch (OVS) + GRE 之 Neutron节点篇
  8. 一道简单的多维数组取值问题
  9. 自动化测试指南-自动化测试工程师必备的技能
  10. VS.net2005的稳定性真的很差劲
  11. Arduino uno LED灯实验
  12. 牛腩新闻发布系统—发布错误总结
  13. html5在线加密,HTML源代码在线加密解密
  14. 数值分析课后习题答案(百度网盘)
  15. 迪杰斯特拉(Dijkstra)算法详解,通俗易懂
  16. jsp复习题库(1)
  17. UE编辑器重要快捷键总结
  18. 【Java设计模式】——单例模式
  19. Hive 实现 IN 和 NOT IN 子句 和 LEFT SEMI JOIN 应用
  20. 国内电子商务的几种典型

热门文章

  1. saltstack二
  2. [WCF] - 使用 [DataMember] 标记的数据契约需要声明 Set 方法
  3. description方法
  4. strerror和perror函数详解
  5. DirectXInput
  6. 如何在邮件系统中使用自己的域名?
  7. CNN理解比较好的文章
  8. iPhone程序运行流程浅谈
  9. unity用coroutine并发实现暂停执行程序
  10. 设计模式-发布订阅模式