首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

共享我编辑的UIImage时,UIActivityViewController会崩溃,但可以使用UIImage(名为:)

共享我编辑的UIImage时,UIActivityViewController会崩溃,但可以使用UIImageWriteToSavedPhotosAlbum方法将UIImage保存到相册中,然后再使用UIActivityViewController分享相册中的图片。

UIImageWriteToSavedPhotosAlbum是一个用于将UIImage保存到相册中的方法。它接受两个参数:要保存的UIImage对象和一个回调方法,用于在保存完成后执行相应的操作。该方法会将图片保存到用户的相册中,并返回一个保存结果的状态码。

使用UIImageWriteToSavedPhotosAlbum方法保存图片后,可以通过UIActivityViewController来分享相册中的图片。UIActivityViewController是一个系统提供的视图控制器,用于展示分享选项。它可以通过设置activityItems参数来指定要分享的内容,其中可以包含UIImage对象。

以下是一个示例代码:

代码语言:txt
复制
// 保存图片到相册
UIImageWriteToSavedPhotosAlbum(image, self, #selector(image(_:didFinishSavingWithError:contextInfo:)), nil)

// 保存完成后的回调方法
@objc func image(_ image: UIImage, didFinishSavingWithError error: Error?, contextInfo: UnsafeRawPointer) {
    if let error = error {
        print("保存图片失败:\(error.localizedDescription)")
    } else {
        print("保存图片成功")
        
        // 分享图片
        let activityViewController = UIActivityViewController(activityItems: [image], applicationActivities: nil)
        present(activityViewController, animated: true, completion: nil)
    }
}

在上述代码中,首先调用UIImageWriteToSavedPhotosAlbum方法将图片保存到相册中,并指定保存完成后的回调方法。在回调方法中,可以判断保存是否成功,如果成功则创建一个UIActivityViewController实例,并将保存的图片作为activityItems参数传入,然后通过present方法展示分享选项。

需要注意的是,为了保证在保存完成后能够正确弹出UIActivityViewController,需要将上述代码放在一个视图控制器中,并确保该视图控制器已经被展示出来。

推荐的腾讯云相关产品:腾讯云对象存储(COS) 腾讯云对象存储(COS)是一种高可用、高可靠、强安全的云存储服务,适用于存储和处理各类非结构化数据,如图片、音视频、文档等。它提供了简单易用的API接口和丰富的功能,可以满足各种存储需求。

腾讯云对象存储(COS)的优势包括:

  1. 高可用性:数据在多个地域、多个可用区进行冗余存储,保证数据的高可用性和可靠性。
  2. 强安全性:提供多层次的数据安全保护,包括身份认证、权限管理、数据加密等,保障数据的安全性。
  3. 弹性扩展:支持按需扩展存储容量,根据业务需求灵活调整存储空间。
  4. 高性能:提供高速上传和下载功能,支持并发访问,满足大规模数据处理的需求。
  5. 成本效益:按实际使用量计费,灵活控制成本。

腾讯云对象存储(COS)的应用场景包括:

  1. 图片存储和处理:可以将图片存储在腾讯云对象存储中,并通过腾讯云的图片处理服务对图片进行处理和加工,如裁剪、缩放、水印等。
  2. 视频存储和分发:可以将视频存储在腾讯云对象存储中,并通过腾讯云的视频点播服务进行视频的存储、转码和分发。
  3. 文件备份和归档:可以将重要的文件备份到腾讯云对象存储中,以保证数据的安全性和可靠性。
  4. 数据共享和协作:可以将数据存储在腾讯云对象存储中,并通过腾讯云的协作工具进行数据的共享和协作。

更多关于腾讯云对象存储(COS)的信息,请访问:腾讯云对象存储(COS)

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

UIActivityViewController系统原生分享-仿简书分享

NSString *textToShare = @"是且行且珍惜_iOS,欢迎关注!"...Activity 类型所支持数据类型不同,当不支持,应用程序支持系统服务按钮就不会出现,比如说打印、添加书签,,,, ?...//在展现view controller,必须根据当前设备类型,使用适当方法。在iPad上,必须通过popover来展现view controller。...当self.activityCategory = UIActivityCategoryAction,系统默认渲染图片,所以不能重写为 - (UIImage *)activityImage {return...;} - (void)performActivity { //这里就可以关联外面的app进行分享操作了 //也可以进行一些数据保存等操作 //操作最后必须使用下面方法告诉系统分享结束了 [self

3.4K80

番外特别篇之 为什么不建议你直接使用UIImage传值?--从一个诡异相册九图连读崩溃bug谈起

形势,瞬间变得很紧张,这个问题优先级瞬间被提到了最高!再次尝试了各种可能情况.图片大小?它是9张1.5M图,就用9张3M图,也是OK呀!选取,顺序有问题?...,很容易看到,这个内存占用,是飙升到G单位.当然,也没那么睿智,是单个N个断点,最终确认了Crash代码准确位置.一个for循环,每次step 1,这下很明显地看到内存,几乎是 100M/张速度在飙升...回到问题本身,用一句概括就是:永远不要直接传递UIImage对象.在需要传递UIImage场景中,请使用图片名或者NSData二进制对代替....真没想到,一个UIImage对象,竟然二次引起高内存占用.最终解决方法,就是在前一个页面传递 NSData数组,在赋值处,再使用imageWithData:转换为 UIImage.这样,内存使用基本没什么起伏...或许,应该研究下 一个UIImage对象,竟然二次引起高内存占用 原因.欢迎大神完善!

1.6K70

iOS开源小项目-WSL

WSL是一款拥有 音乐播放,新闻,壁纸,画板,简易地图,计时器等等功能小项目,是自己早期学习做着玩,并没上架;UI是自己设计,所以挺吃藕,粗糙,没做适配,是在6尺寸下开发 ,还希望不要嫌弃了...下面稍微介绍下此APP功能模块,有需要可以去去 github ,欢迎star!...#import "UIImage+ZJWallPaper.h" #import #import @interface UIImage...,滚动显示功能单独抽出来又写了一篇文章和demo,感兴趣可以去这篇文章看看 iOS 音乐播放器之锁屏效果+歌词解析 ?...锁屏歌词.PNG 详情可以参考之前文章: iOS 音乐播放器之锁屏效果+歌词解析 仿简书分享-UIActivityViewController系统原生分享 iOS技术网站和常用软件 iOS

2.7K60

UILabel、UIImageView和UIButton

第二个是sizeToFit方法,label调用该方法后,label尺寸根据内容来自适应,如果是多行则宽度不变,高度变化;如果是单行,则高度不变,宽度自适应变化。...该属性是一个UIImage数组,可以实现一个简单动画,但是只有在做非常规动画时候才会有优势。但是不要存放大量UIImage实例,这样容易引起内存问题,进而会导致程序崩溃。...使用代码如下: //确保每一个UIImage对象不可以为空,否则会出现崩溃并且不容易定位。...NSArray *array = @[[UIImage imageNamed:@"image1"], [UIImage imageNamed:@"image2...之前时候,遇到上面的需求,都是子类化一个UIView,然后给该子类添加手势,其实只需要子类化一个UIButton即可,这样就不用自己添加手势了!

75130

【IOS开发基础系列】SDWebImageDownloader专题

既ASIHttp+AsyncImage之后,一直使用AFNetworking集成UIImageView+AFNetworking.h,但后者对于图片缓存实际应用是NSURLCache自带cache...9、共享或重新生成一个下载器 SDWebImageDownloader 开始下载图片。     ...这句话很重要image =[[UIImage alloc] initWithData:data]; SDWebImage把下载下来data直接转成image,然后没做等比缩放直接存起来使用。...        在使用SDWebImage加载较多图片造成内存警告,定期调用  [[SDImageCache sharedImageCache] setValue: nil forKey: @"memCache...,简单说一下解决方案 http://www.myexception.cn/swift/2033029.html 关于SDWebImage加载高清图片导致app崩溃问题 http://www.bubuko.com

46820

iOS生成对象释放时机

如果使用imageNamed这个方法加载一些比较大资源文件就容易崩溃,从而引发了imageNamed生成对象什么时候释放?...使用imageNamed这个方法生成UIImage对象,会在应用bundle中寻找图片,如果找到,则Cache到系统缓存中,作为内存cache,而程序员是无法操作cache,只能由系统自动处理,...如果我们需要重复加载一张图片,那这无疑是一种很好方式,因为系统能很快从内存cache找到这张图片,但是试想,如果加载很多很大图片时候,内存消耗过大时候,就会会强制释放内存,即遇到内存警告(...由此看来[UIImage imageNamed:]只适合与UI界面中小贴图读取,而一些比较大资源文件应该尽量避免使用这个接口[UIImage imageWithContentsOfFile]解决掉这个问题...进行一些处理,比如存文件什么 } 执行这段代码就会看到内存越增越大,容易导致崩溃

1.4K20

【IOS开发高级系列】异步绘制专题

1 图片处理 1.1 编辑图片几个方法 第一种 先用UIImage对象加载一张图片 然后转化成CGImageRef放到CGContext中去编辑 第二种 用CGImageCreate...,大幅度降低图片数据量.譬如,刚才拍摄图片, 通过调用UIImageJPEGRepresentation(UIImage* image, 1.0)读取数据,返回数据大小为140KB,但更改压缩系数后...,通过调用UIImageJPEGRepresentation(UIImage* image, 0.5)读取数据,返回数据大小只有11KB多,大大压缩了图片数据量 ,而且从视角角度看,图片质量并没有明显降低....因此,在读取图片数据内容,建议优先使用UIImageJPEGRepresentation,并可根据自己实际使用场景,设置压缩系数,进一步降低图片数据量大小. 1.4 图片缩放 图片缩放三个函数...p=9 用UIImage和UIButton画出按钮,使用透明png图片,为什么会出现白边 http://segmentfault.com/q/1010000000095447 JPG、PNG和GIF

1.3K20

iOS 客户端动图优化实践

端内动图展示问题以及优化结果 长期以来, 部分机型浏览 Q 音图文流很容易闪退, 端内其他业务也存在不少动图相关崩溃上报记录....使用这套方案加载动图有如下三个问题: 当且仅当所有帧图片都加载完毕,才能够显示, 特别是在做异步解码时候, 导致动图首帧加载时长较长. 不同帧展示时长一样,使得动图失真....(最大公约数方案可解决) 在背景线程解析出所有帧, 此时如果对帧不做解码造成卡顿, 但是做异步解码, 小内存机型直接内存暴涨导致崩溃, 因此在线上只能灰度开启....图片一般是内存消耗大户, 因此可以在图片解码失败, 主动尝试释放图片内存缓存, 正在使用图片不会被释放, 未被使用图片先释放掉以腾出内存, 从而规避内存不足造成崩溃. 4.4 其他优化措施 4.4.1...在内存不足导致解码失败主动释放 SDImageCache memoryCache, 避免其他业务申请不到内存导致崩溃. 设置开启图片下采样, 以合理使用内存.

4.9K40

IOS开发系列——异步绘制专题

异步绘制专题 1 图片处理 1.1 编辑图片几个方法 第一种 先用UIImage对象加载一张图片 然后转化成CGImageRef放到CGContext中去编辑 第二种 用CGImageCreate...,大幅度降低图片数据量.譬如,刚才拍摄图片, 通过调用UIImageJPEGRepresentation(UIImage*image, 1.0)读取数据,返回数据大小为140KB,但更改压缩系数后...,通过调用UIImageJPEGRepresentation(UIImage* image, 0.5)读取数据,返回数据大小只有11KB多,大大压缩了图片数据量 ,而且从视角角度看,图片质量并没有明显降低....因此,在读取图片数据内容,建议优先使用UIImageJPEGRepresentation,并可根据自己实际使用场景,设置压缩系数,进一步降低图片数据量大小. 1.4 图片缩放 图片缩放三个函数...(); // 返回新改变大小后图片 return scaledImage; } @end 如何使用 // 创建图片 UIImage *image =[UIImage imageNamed:@"myImage.png

1.4K20

iOS状态栏设置

设置为YES ViewController配置优先级高于Application配置 UIViewControllerBasedStatusBarAppearance设置为NO 那么只取Application...statusBar颜色 在navigationBar上addSubView该UIView即可 UINavigationBar设置 上面说了状态栏 这里顺便把UINavigationBar也说了 配置...let appear = UINavigationBar.appearance(); //在早期版本上设置 不能全局方式设置 导致app崩溃 //appear.translucent = false...; 注意 1) appear.translucent配置在早期系统崩溃,不建议配置,建议在ViewController中配置 2) 在translucent=true也就是透明时,barTintColor...appear.shadowImage = UIImage(); 5) 在translucent=true也就是透明时,如果用扇面的方式去掉navigationBar下黑线,导致状态栏颜色与navigationBar

2.6K11

面向对象设计设计模式(十二):享元模式

定义解读: 享元模式目的就是使用共享技术来实现大量细粒度对象复用,提高性能。 享元对象能做到共享关键是区分内部状态(Internal State)和外部状态(External State)。...适用场景 系统有大量相似对象,这些对象有一些外在状态。 应当在多次重复使用享元对象才值得使用享元模式。...看一下截图: 百花图 场景分析 由于这里我们需要创建很多对象,而这些对象有可以共享内部状态(6种图片内容)以及不同外部状态(随机,数百个位置坐标和图片大小),因此比较适合使用享元模式来做。...而且这个工厂持有一个保存图片对象池子: 当该类型花第一次被创建,工厂新建一个所对应花内部图片对象,并将这个对象放入池子中保存起来。...享元模式外部状态相对独立,而且不会影响其内部状态,从而使得享元对象可以在不同环境中被共享。 缺点 使用享元模式需要分离出内部状态和外部状态,这使得程序逻辑复杂化。

62920

iOS开发中标签控制器使用——UITabBarController

iOS开发中标签控制器使用——UITabBarController 一、引言         与导航控制器相类似,标签控制器也是用于管理视图控制器一个UI控件,在其内部封装了一个标签栏,与导航不同是...,使我们可以更加灵活使用tabBar。...:(BOOL)animated;    //是否正在自定义标签布局 - (BOOL)isCustomizing; 设置tabBar颜色相关: //设置渲染颜色,影响选中字体和图案渲染 @property...; //设置选中一个标签,标签背后选中提示图案 这个会出现在设置item图案后面 @property(nullable, nonatomic,strong) UIImage *selectionIndicatorImage...;    //图案     @property(nullable, nonatomic,strong)           UIImage     *image;   //横屏图案       @property

1.5K20

iOS 图片选择打造专属于自己 ImagePicker

官方对Photokit概念解释为: 在iOS和macOS中,PhotoKit提供了支持为Photos应用构建照片编辑扩展类。...使用PhotoKit,您可以获取和缓存assets以进行显示和回放,编辑图像和视频内容,或管理assets集合,例如专辑,时刻和共享相册。...,如何去获取系统内所有照片资源,如何去获取所有的相册,以及如何将获取到数据直观展现给用户看将是本章内容要展示给大家。...PHCachingImageManager:PHImageManager子类,为了处理大量PHAsset数据提升性能,如果要使用照片或视频资源缩略图填充UICollectionViewController...PHImageRequestOptions:控制图片加载一些参数,例如同步加载or异步加载,图片尺寸等。

1.3K10

添加多个屏幕-创建格线布局

该助理编辑自动更改为新类文件。删除已注释代码块。 ?...按住Ctrl并拖动按钮并将其命名为:screenImageButton。对标签重复相同步骤并将其命名为:screenLabel。 ?...使用segue名称声明一个if语句。这样,您确定在调用此segue,我们将执行操作。将委托设置为self。我们需要使用委托来指定我们正在调用,否则,View Controller不知道。...cell.index = indexPath.row 返回UIImage 当我们点击按钮,它将在函数中返回UIImage类型图像。为ARScreen图像声明一个新数组。...这部分是一个非常漫长而艰难部分。我们学到了很多关于如何实现Collection View知识。我们还学会了如何委派。这是ARKit 2扩展结束,我们已经走了很长路!希望你喜欢这门课程!

2.9K40

iOS运行时Runtime应用

遗憾是,OC类目并不支持直接添加属性,如果我们直接在分类声明中写入Property属性,那么只能为其生成set与get方法声明,却不能生成成员变量,直接调用这些属性还会造成崩溃。...当我们需要持续大量重复调用某个方法时候,十分有用,具体代码示例如下: void (*setter)(id, SEL, BOOL); int i; setter = (void (*)(id, SEL...执行OC方法其实就是一个发送消息过程,若方法未实现,我们可以利用方法动态解析与消息转发来避免程序崩溃,这主要涉及下面一个处理未实现消息过程: 消息转发流程图.png 除了上述方法动态解析,还使用相关方法如下...基本思路:首先使用Runtime获取Peson对象所有属性,找到nickName,然后使用ivar方法修改其值。....png 现在,我们使用Runtime来实现字典转模型操作,大致思路是这样: 借助Runtime可以动态获取成员列表特性,遍历模型中所有属性,然后以获取到属性名为key,在JSON字典中寻找对应

1.3K20

iOS压缩图片大小

最近碰到一个比较愚蠢问题,项目中做拍照或者从相册选择图片上传,没有经过处理,直接把原图上传了,导致在列表中看时候,明明是小图片流量却要爆炸了,想想iphone拍出照片大小可都是以M为单位。...调用方法如下: //图片伸缩到指定大小 - (UIImage*)imageByScalingAndCroppingForSize:(CGSize)targetSize forImage:(UIImage...*)originImage { UIImage *sourceImage = originImage;// 原图 UIImage *newImage = nil;// 新图...theImage = [self imageByScalingAndCroppingForSize:CGSizeMake(100, 100) forImage:theImage]; } 这样就可以了,名为...这个方法也可以用来伸缩图片尺寸,不过还是用来压缩,在不追求高清晰度情况下,使用还是很方便灵活,希望能帮到大家~

1.4K20

推荐:多线程实现方式及经典示例

下面就给大家系统介绍一下 GCD 是如何实现多线程 GCD 实现多线程 GCD 简介 GCD 全称是Grand Central Dispatch,可译为“超级厉害中枢调度器”,GCD 是苹果公司为多核并行运算提出解决方案..., GCD自动利用更多 CPU 内核(比如双核、四核)来开启线程执行任务,GCD 自动管理线程生命周期(创建线程、调度任务、销毁线程),不需要我们程序员手动管理内存。...同步函数和异步函数,并发队列和串行队列 用同步方式执行任务:在当前线程中可立即执行任务,不具备开启线程能力 用异步方式执行任务:在当前线程结束执行任务,具备开启新线程能力 并发队列:允许多个任务同时执行...你等我,等你,谁也无法执行。...,使用多线程,我们可以实现小图片多图片下载。

1.2K160
领券