首页 > 代码库 > phone Extension 用法基础详解
phone Extension 用法基础详解
1 首先我们需要创建一个phone Extension target当然我们也必须知道Extension app必须在一个containg app内 我们从建立一个target开始
选择菜单 file->new->target
其中PhotoEditingViewController就是我们编辑图片的承载器,我们的图片展示以及代码处理都是在这里面完成,默认的使用sb创建的,而且不能更改,那些不懂sb的需要好好学习了。
info.plist是Extension app的配置文件,我们主要关心的是NSExtension这个数组
NSExtensionMainStoryboard 是扩展的sb
NSExtensionPointIdentifier 是标示这是一个什么类型的扩展,这个一般在最初创建的时候,已经固定了,基本不用更改。
3 编辑我们的图片扩展app UI
注意:不要忘记关联sb啊
4 实现PHContentEditingController,这个在创建文件的时候,已经默认添加,主要有以下结果函数
通过简单地以上六步就能完成对photo Extension app。
选择菜单 file->new->target
2 在我们的app中会有一个独立的photo Extension app 文件
其中PhotoEditingViewController就是我们编辑图片的承载器,我们的图片展示以及代码处理都是在这里面完成,默认的使用sb创建的,而且不能更改,那些不懂sb的需要好好学习了。
info.plist是Extension app的配置文件,我们主要关心的是NSExtension这个数组
NSExtensionMainStoryboard 是扩展的sb
NSExtensionPointIdentifier 是标示这是一个什么类型的扩展,这个一般在最初创建的时候,已经固定了,基本不用更改。
3 编辑我们的图片扩展app UI
注意:不要忘记关联sb啊
4 实现PHContentEditingController,这个在创建文件的时候,已经默认添加,主要有以下结果函数
刚进入界面的时候,我们能从这个获取到extnsion的对象和获取到图片对象,把获取的图片展示到背景图片上
- (void)startContentEditingWithInput:(PHContentEditingInput *)contentEditingInput placeholderImage:(UIImage *)placeholderImage { self.backGroundImageView.image = placeholderImage; CGSize newSize = [self getImageSizeFrame:placeholderImage]; self.backGroundImageView.frame = CGRectMake(0, 0, newSize.width, newSize.height); }
5 通过coreImage对图片进行编辑
那么如何实现改变图片的image的样式呢,我们通过coreImage的方式
<span style="white-space:pre"> </span>CIFilter * filter = [CIFilter filterWithName:@"CISepiaTone"]; [filter setValue:originalImage forKey:@"inputImage"]; [filter setValue:[NSNumber numberWithFloat:5] forKey:@"inputIntensity"]; CIContext *context = [CIContext contextWithOptions:[NSDictionary dictionary]]; CIImage * ciImage = [filter outputImage]; CGImageRef cgimg = [context createCGImage:ciImage fromRect:[ciImage extent]]; UIImage * image = [UIImage imageWithCGImage:cgimg scale:1.0f orientation:UIImageOrientationUp]; CGImageRelease(cgimg);
6 保存编辑的图谱到相册
- (void)finishContentEditingWithCompletionHandler:(void (^)(PHContentEditingOutput *))completionHandler { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ PHContentEditingOutput *output = [[PHContentEditingOutput alloc] initWithContentEditingInput:self.input]; NSData * archivedData = [NSKeyedArchiver archivedDataWithRootObject:self.selectedFilterName]; PHAdjustmentData * adjuestmentData = [[PHAdjustmentData alloc] initWithFormatIdentifier:@"com.grandsoft.ReadBook" formatVersion:@"1.0" data:archivedData]; output.adjustmentData = adjuestmentData; switch (self.input.mediaType) { case PHAssetMediaTypeImage: { NSURL * url = self.input.fullSizeImageURL; int orie = self.input.fullSizeImageOrientation; UIImage * image = [UIImage imageWithContentsOfFile:url.path]; image = [self transformedImage:image withOrientation:orie usingFilter:self.ciFilter]; NSData * receJPEGData = UIImageJPEGRepresentation(image, 0.9); NSError * error = nil; BOOL success = [receJPEGData writeToURL:output.renderedContentURL options:NSDataWritingAtomic error:&error]; if(success) { completionHandler(output); } else { completionHandler(nil); } break; } case PHAssetMediaTypeVideo: { break; } default: break; } completionHandler(output); }); }
通过简单地以上六步就能完成对photo Extension app。
phone Extension 用法基础详解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。