Swift - Cell自适应+代码约束(SnapKit)横竖屏支持平铺+根据URL获取图片size
来源:互联网 发布:高斯奥特曼未来型数据 编辑:程序博客网 时间:2024/05/16 12:21
对于适配博主早已仰慕已久,后来看了Masonry之后,也是对代码约束有了初步了解,慢慢的接触到Swift,就想把约束带进Swift,刚好Masonry的团队也开发了针对Swift约束的SnapKit库,索性就练习下,cell自适应在前面有用Object-C写过,但是当时用的是相对布局,也不支持横屏。这里的代码在原基础上采用Swift,改进了一些细节,下面慢慢介绍:
1.获取图片size
原先获取图片size是在cell布局时来获取的,而在获取图片size时是要发起网络请求的,so,除了阻塞主线程之外还会让tableview滚动起来奇卡无比,解决的办法就是在下载完数据的时候在下载的线程中直接获取图片的size并存储在字典中备下面使用,因为size有了,不管横竖屏只要有size得到的比例,可以完美适配。
2.使用原生方法进行请求时要回调主线程刷新UI
前面博主由有发过怎么用原生的请求方法来访问网络,但是在这个Demo中博主犯了一个低级错误,因为原生请求本身就是一个线程,而博主用第三方的用习惯了,直接在请求完成后刷新tableview,在这个子线程中无疑会阻塞主线程,所以会看到等了好久才刷新出来数据,正确的做法是回到主线程:
dispatch_async(dispatch_get_main_queue(), { print("OK") self.creatTableView() self._tableView.reloadData() })
3.横竖屏时屏幕width和height的变化
var WIDTH = UIScreen.mainScreen().bounds.size.widthvar HEIGHT = UIScreen.mainScreen().bounds.size.height
获取屏幕宽高有好多种办法,以上只是一种,那么在横屏时以上值是否变化呢?
实际上博主看了是没有变化的,高度是跟宽有点关系的,所以需要检测当前屏幕的状态了:
if UIDevice.currentDevice().orientation == .Portrait { width = WIDTH}else{ width = HEIGHT}
这样一来横竖屏就适配了。
这里先不放代码了,需要的自行下载:
https://github.com/codeliu6572/sizeSwift_cellLayout_getImageSizeByURL
- Swift - Cell自适应+代码约束(SnapKit)横竖屏支持平铺+根据URL获取图片size
- Swift - 根据图片URL获取图片的大小
- swift约束之SnapKit的使用方式
- Swift 使用SnapKit实现 UICollectionViewCell 高度自适应
- Swift 图片平铺
- ImageView根据图片横竖自适应调整宽高
- 根据图片url获取图片尺寸
- 根据图片url获取图片尺寸
- 根据图片url获取图片尺寸
- swift UITableView cell自适应高度
- swift tableview cell自适应高度
- swift UITableView cell自适应高度
- Swift cell的自适应高度
- 根据图片的网络URL获取Bitmap
- Android—根据URL获取Bitmap图片
- 根据URL获取图片的bitmap
- Swift编程(六):Snapkit的启示录
- aotuLayout(masonry、snapKit)约束布局动画更新约束
- git与远程仓库
- NYOJ一种排序
- WEB应用中的SESSION知多少?
- shiro登录Controller
- NSString与NSMutableString的区别
- Swift - Cell自适应+代码约束(SnapKit)横竖屏支持平铺+根据URL获取图片size
- git的fetch用法
- stl中multimp用法及实例
- Topic Model
- scala-计算两个GPS坐标的距离
- 读取手机照片或相机拍摄的照片,将其显示在imageview上的onActivityResult方法
- 某天想做某事于是...
- NCReport配置并测试
- 设计高并发下的读服务?