iOS9 系统分享调用之UIActivityViewController
程序员文章站
2022-05-16 11:34:57
uiactivityviewcontroller类是一个标准的view controller,通个使用这个controller,你的应用程序就可以提供各种服务。
系统提供...
uiactivityviewcontroller类是一个标准的view controller,通个使用这个controller,你的应用程序就可以提供各种服务。
系统提供了一些通用的标准服务,例如拷贝内容至粘贴板、发布一个公告至社交网、通过email或者sms发送内容。
应用程序同样可以自定义服务。(我的微信分享就属于自定义服务, 之后将会写一篇教程介绍)
你的应用程序负责配置、展现和解雇这个view controller。
viewcontroller的配置涉及到viewcontroller需要用到的具体的数据对象。(也可以指定自定义服务列表,让应用程序支持这些服务)。
在展现view controller时,必须根据当前的设备类型,使用适当的方法。在ipad上,必须通过popover来展现view controller。在iphone和ipodtouch上,必须以模态的方式展现。
昨天有网友说我写的那段系统分享代码在ios9上有warning,看下了原来ios8之后uipopovercontroller被废弃了。新增加的uipopoverpresentationcontroller在控制popview上更简单好用。
下面是我修改之后的代码:
1. 在app内以子视图方式打开其他app预览,仅支持6.0以上
openappwithidentifier(appid: string)
2. 分享文字图片信息,ipad上会以sourceview为焦点弹出选择视图
share(texttoshare: string, url: string, image: uiimage, sourceview: uiview) /// 在app内以子视图方式打开其他app预览,仅支持6.0以上 private func openappwithidentifier(appid: string) { if let _ = nsclassfromstring("skstoreproductviewcontroller") { let storeproductviewcontroller = skstoreproductviewcontroller() storeproductviewcontroller.delegate = self let dict = nsdictionary(object:appid, forkey:skstoreproductparameteritunesitemidentifier) as! [string : anyobject] storeproductviewcontroller.loadproductwithparameters(dict, completionblock: { (result, error) -> void in // self.presentviewcontroller(storeproductviewcontroller, animated: true, completion: nil) }) self.presentviewcontroller(storeproductviewcontroller, animated: true, completion: nil) }else { uiapplication.sharedapplication().openurl(nsurl(string: "itms-apps://itunes.apple.com/app/id\(appid)")!) } } /// 分享文字图片信息,ipad上会以sourceview为焦点弹出选择视图 private func share(texttoshare: string, url: string, image: uiimage, sourceview: uiview) { let objectstoshare = [texttoshare, url, image] let activityviewcontroller = uiactivityviewcontroller(activityitems: objectstoshare, applicationactivities: nil) if uidevice.currentdevice().userinterfaceidiom == uiuserinterfaceidiom.phone { self.presentviewcontroller(activityviewcontroller, animated: true, completion: nil) }else { let popover = activityviewcontroller.popoverpresentationcontroller if (popover != nil){ popover?.sourceview = sourceview popover?.sourcerect = sourceview.frame popover?.permittedarrowdirections = uipopoverarrowdirection.any self.presentviewcontroller(activityviewcontroller, animated: true, completion: nil) } } }
下一篇: 使用ARM汇编破解iOS程序基础知识分享