当前位置: 移动技术网 > 移动技术>移动开发>IOS > iOS9 系统分享调用之UIActivityViewController

iOS9 系统分享调用之UIActivityViewController

2019年07月24日  | 移动技术网移动技术  | 我要评论

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)
  }
 }
 }

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网