iOS 9システム共有コール(UIActivityView Control)


サルオリジナル、転載を歓迎します.転載はCocos 2 Der-CSDNから転載して、ありがとうございます!原文住所:http://blog.csdn.net/cocos2der/article/details/49615109
昨日、あるネットユーザーは私が書いたシステム共有コードがiOS 9にwarningがあると言っていました.ios 8を見た後、UIPopoverControllerは廃棄されました.新しく追加されたUIPopoverPresentationControllerは、PopViewを制御する上でより簡単で使いやすい.
iOS9 系统分享调用(UIActivityViewController)_第1张图片
次は私が修正したコードです.
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)
            }
        }
    }