美文网首页
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