开发日志 10-day

开发日志 10-day


参数越界报错

  • ‘NSInvalidArgumentException’, reason: ‘-[NSInvocation setArgument:atIndex:]: index (2) out of bounds [-1, 1]’
    * First throw call stack:
    • 其中NSInvocation代表回调,调用的意思,一般值调用某种方法,setArgument:atIndex代表某种参数。
    • 这个报错意思是参数越界

PHotos框架详解

  • 判断状态
    PHAuthorizationStatusNotDetermined = 0, // 用户还没做出选择
    PHAuthorizationStatusRestricted,        // 用户拒绝当前应用访问相册
    PHAuthorizationStatusDenied,            // 用户允许
    PHAuthorizationStatusAuthorized         // 家长控制
  • PHAsset : 一个资源, 比如一张图片\一段视频
    PHAssetCollection : 一个相簿
  • PHAssetCollection的标识, 利用这个标识可以找到对应的PHAssetCollection对象(相簿对象)

    __block NSString *assetCollectionLocalIdentifier = nil;

    PHAsset的标识, 利用这个标识可以找到对应的PHAsset对象(图片对象)
    __block NSString *assetLocalIdentifier = nil;

    如果想对”相册”进行修改(增删改), 那么修改代码必须放在[PHPhotoLibrary sharedPhotoLibrary]的performChanges方法的block中

  • 使用技巧

    • 保存照片到相机胶卷中,创建图片请求 PHAssetCreationRequest
    • 创建相簿
    • 获得创建相簿

      • fetchAssetCollectionsWithType 抓取所有相簿,返回相簿集合,然后通过for循环找到相应相簿
      for (PHAssetCollection *assetCollection in assetCollections) {
      if ([assetCollection.localizedTitle isEqualToString:MYAssetCollectionTitle]) {
          return assetCollection;
      }
      }
      
    • 获得照片 (通过标识获得图片)

      PHAsset *asset = [PHAsset fetchAssetsWithLocalIdentifiers:@[assetLocalIdentifier] options:nil].lastObject;
    • 添加相机胶卷的照片到相簿请求

      PHAssetCollectionChangeRequest *request = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:assetCollection];
    • 添加图片到相簿

    [request addAssets:@[asset]];

AFN知识补充

  • block 强引用
[AFHTTPSessionManager manager]GET:<#(nonnull NSString *)#> parameters:<#(nullable id)#> progress:<#^(NSProgress * _Nonnull downloadProgress)downloadProgress#> success:<#^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject)success#> failure:<#^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error)failure#>
  • 如果使用强引用的block 访问外部对象,则只要执行完block代码才会挂掉,比如用户在网络还没读完数据就退出界面,block中的网络读取还会继续进行
  • 解决方法: __weak typeof(self) weakSelf = self;
  • 取消请求
[AFHTTPSessionManager manager] invalidateSessionCancelingTasks:YES];

设置圆形图片

  • 可以扩展uiimage简化代码
  • 利用Quartz 2D

    // 开启图形上下文
    UIGraphicsBeginImageContext(self.size);

    // 上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();

    // 添加一个圆
    CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height);
    CGContextAddEllipseInRect(ctx, rect);

    // 裁剪
    CGContextClip(ctx);

    // 绘制图片
    [self drawInRect:rect];

    // 获得图片
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

    // 关闭图形上下文
    UIGraphicsEndImageContext();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值