Swift - Cell自适应+代码约束(SnapKit)横竖屏支持平铺+根据URL获取图片size

简介: Swift - Cell自适应+代码约束(SnapKit)横竖屏支持平铺+根据URL获取图片size

对于适配博主早已仰慕已久,后来看了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.width
var HEIGHT = UIScreen.mainScreen().bounds.size.height

获取屏幕宽高有好多种办法,以上只是一种,那么在横屏时以上值是否变化呢?


实际上博主看了是没有变化的,高度是跟宽有点关系的,所以需要检测当前屏幕的状态了:

if UIDevice.currentDevice().orientation == .Portrait  
{
                width = WIDTH
}
else
{
                width = HEIGHT
}

这样一来横竖屏就适配了。


这里先不放代码了,需要的自行下载:

https://github.com/codeliu6572/sizeSwift_cellLayout_getImageSizeByURL

目录
相关文章
|
Java
Java开发实现图片URL地址检验,如何编码?
【10月更文挑战第14天】Java开发实现图片URL地址检验,如何编码?
473 4
【微信公众平台对接】有关【上传图文消息内的图片获取URL】调用示例
【微信公众平台对接】有关【上传图文消息内的图片获取URL】调用示例
450 0
【微信公众平台对接】有关【上传图文消息内的图片获取URL】调用示例
【微信公众平台对接】有关【上传图文消息内的图片获取URL】调用示例
398 0
|
数据采集 存储 前端开发
Java爬虫开发:Jsoup库在图片URL提取中的实战应用
Java爬虫开发:Jsoup库在图片URL提取中的实战应用
|
前端开发 JavaScript
react-qr-code的第三方库来将URL转换成二维码图片
在React中,你可以使用一个叫做react-qr-code的第三方库来将URL转换成二维码图片并保存。首先,你需要安装这个库: ``` npm install react-qr-code ``` 然后,在你的组件中引入react-qr-code: ``` import QRCode from 'react-qr-code'; ``` 接着,在render方法中使用QRCode组件,将URL作为一个属性传递进去: ``` render() { const url = 'https://www.example.com'; return ( <div> <Q
1355 0
|
Swift 数据安全/隐私保护
40 Swift中代码访问权限控制
Swift中代码访问权限控制
182 0
|
Java 机器人 API
JAVA实现自动打开URL对应的网页并保存为图片-不借助第三方API
JAVA实现自动打开URL对应的网页并保存为图片-不借助第三方API
193 9
|
缓存 Java Apache
Spring一行代码搞定图片url地址转换为Base64,超简单!!!!
这段内容讲述了如何将URL指向的图片转换为Base64字符串。首先通过`org.apache.commons.io.IOUtils`或Java标准库读取URL的字节流,然后用Java 8的`Base64`类编码。示例代码提供了两种实现方式:一种依赖Apache Commons IO,另一种仅使用Java内置类。在第二种方式中,自定义了`toByteArray()`方法处理输入流并转换为字节数组,最后关闭输入流释放资源。
|
Web App开发 前端开发
canvas保存图片时,谷歌浏览器Chrome报错【解决方案】Not allowed to navigate top frame to data URL
canvas保存图片时,谷歌浏览器Chrome报错【解决方案】Not allowed to navigate top frame to data URL
682 0
|
JavaScript
js 下载文件(根据URL下载文件,根据URL下载图片)
js 下载文件(根据URL下载文件,根据URL下载图片)
1577 0

相关课程

更多