美文网首页
iOS 小知识6

iOS 小知识6

作者: AppleTTT | 来源:发表于2018-05-14 10:36 被阅读35次

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 端的视频数据,做到边下边播;

可能是目前最好的 AVPlayer 音视频缓存方案

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)

相关文章

网友评论

      本文标题:iOS 小知识6

      本文链接:https://www.haomeiwen.com/subject/mlsddftx.html