iOS 小知识6
load underlying module
有些 github
上面的 demo
使用 cocoaPods
管理第三方库,当运行的时候会出现 cannot load underlying module for ‘***’
的错误提示,这个时候我们只需要在 podfile
文件里面添加这句话 source 'https://github.com/CocoaPods/Specs.git'
就行了
比如:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, "8.0"
use_frameworks!
target "工程名" do
pod "SnapKit"
pod "Kingfisher"
pod "SVProgressHUD"
pod "FDFullscreenPopGesture", "~> 1.1"
pod "Alamofire"
pod "SwiftyJSON"
pod "MJRefresh"
end
PHImageManager 请求图片的坑
我们在使用 requestImageForAsset:targetSize:contentMode:options:resultHandler:
请求系统相册的图片的时候,如果 options 为 nil 或者是没有进行相应的配置,会导致返回的图像的尺寸不正确。
PHImageRequestOptions有以下几个重要的属性:
synchronous:指定请求是否同步执行。
resizeMode:对请求的图像怎样缩放。有三种选择:None,不缩放;Fast,尽快地提供接近或稍微大于要求的尺寸;Exact,精准提供要求的尺寸。
deliveryMode:图像质量。有三种值:Opportunistic,在速度与质量中均衡;HighQualityFormat,不管花费多长时间,提供高质量图像;FastFormat,以最快速度提供好的质量。
这个属性只有在 synchronous 为 true 时有效。
normalizedCropRect:用于对原始尺寸的图像进行裁剪,基于比例坐标。只在 resizeMode 为 Exact 时有效。
resizeMode 默认是 None,这也造成了返回图像尺寸与要求尺寸不符。这点需要注意。要返回一个指定尺寸的图像需要避免两层陷阱:一定要指定 options 参数,resizeMode 不能为 None。
除了必有的请求图像或是视频的功能外,PHImageManager添加了两大功能:
1. 缓存图像,由其子类PHCachingImageManager实现,缓存效率和空间管理能满足大部分场景的需求;
2. 裁剪图像
参考资料 iOS 获取图像的方式与坑点
AVPlayer 音视频缓存方案
使用 AVAssetResourceLoaderDelegate 进行缓存 server 端的视频数据,做到边下边播;
NSPredicate和正则表达式
原文地址:NSPredicate和正则表达式
Cocoa 提供了NSPredicate 用于指定过滤条件,谓词是指在计算机中表示计算真假值的函数,它使用起来有点儿像SQL 的查询条件,主要用于从集合中分拣出符合条件的对象,也可以用于字符串的正则匹配。
定义(最常用到的方法):
NSPredicate *ca = [NSPredicate predicateWithFormat:(NSString *), ...];
(1)比较运算符>,<,==,>=,<=,!=
可用于数值及字符串
例:@"number > 100"
(2)范围运算符:IN、BETWEEN
例:@"number BETWEEN {1,5}"
@"address IN {'shanghai','beijing'}"
(3)字符串本身:SELF
例:@“SELF == ‘APPLE’"
(4)字符串相关:BEGINSWITH、ENDSWITH、CONTAINS
例:@"name CONTAIN[cd] 'ang'" //包含某个字符串
@"name BEGINSWITH[c] 'sh'" //以某个字符串开头
@"name ENDSWITH[d] 'ang'" //以某个字符串结束
注:[c]不区分大小写[d]不区分发音符号即没有重音符号[cd]既不区分大小写,也不区分发音符号。
(5)通配符:LIKE
例:@"name LIKE[cd] '*er*'" //*代表通配符,Like也接受[cd].
@"name LIKE[cd] '???er*'"
(6)正则表达式:MATCHES
例:NSString *regex = @"^A.+e$"; //以A开头,e结尾
@"name MATCHES %@",regex
Mac 查看图片信息
exif
安装 homebrew
后直接 brew install exif
即可安装 exif
,然后可以使用这个区查看图片信息
多手势处理
在有多个不同手势的时候,可以加上这样一句话来规定不同手势的调用顺序
let singleTap = UITapGestureRecognizer(target: self, action: Selector.singleTapAction)
contentView.addGestureRecognizer(singleTap)
let doubleTap = UITapGestureRecognizer(target: self, action: Selector.doubleTapAction)
doubleTap.numberOfTapsRequired = 2
singleTap.require(toFail: doubleTap)
网友评论