关于iPhone:如何添加此共享按钮?迅速的iOS8

How do i add this sharing button? IOS8 with swift

我希望我的应用程序中有一个按钮,当按下该按钮时,将弹出此按钮(请参见下图)。我怎么做?我不想创建一个自定义共享活动,我只想要默认一个?我使用什么代码?在线上的所有教程都在Objective-C中。请尽快给出答案。

图片:http://9to5mac.com/2014/06/30/hands-on-1password-beta-shows-off-ios-8s-touch-id-extensions-apis-video/#jp-carousel- 330420

到目前为止,这是我的代码,但是我得到一个错误,即UIBarButtonItem无法转换为UIVIew为什么?该动作是否已连接到导航栏按钮项目?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
@IBAction func ActionButton(sender: UIBarButtonItem) {

    let firstActivityItem ="Text you want"
    let secondActivityItem : NSURL = NSURL(string:"http//:urlyouwant")!
    // If you want to put an image
    let image : UIImage = UIImage(named:"TALogo")!

    let activityViewController : UIActivityViewController = UIActivityViewController(
        activityItems: [firstActivityItem, secondActivityItem, image], applicationActivities: nil)

    // This lines is for the popover you need to show in iPad
    activityViewController.popoverPresentationController?.sourceView = (sender as! UIBarButtonItem)

    // This line remove the arrow of the popover to show in iPad
    activityViewController.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection.allZeros
    activityViewController.popoverPresentationController?.sourceRect = CGRect(x: 150, y: 150, width: 0, height: 0)

    // Anything you want to exclude
    activityViewController.excludedActivityTypes = [
        UIActivityTypePostToWeibo,
        UIActivityTypePrint,
        UIActivityTypeAssignToContact,
        UIActivityTypeSaveToCameraRoll,
        UIActivityTypeAddToReadingList,
        UIActivityTypePostToFlickr,
        UIActivityTypePostToVimeo,
        UIActivityTypePostToTencentWeibo
    ]

    self.presentViewController(activityViewController, animated: true, completion: nil)



}

例如,以下列方式使用UIActivityViewController

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
@IBAction func shareSheet(sender: AnyObject) {

    let firstActivityItem ="Text you want"
    let secondActivityItem : NSURL = NSURL(string:"http//:urlyouwant")!
    // If you want to put an image
    let image : UIImage = UIImage(named:"image.jpg")!

    let activityViewController : UIActivityViewController = UIActivityViewController(
        activityItems: [firstActivityItem, secondActivityItem, image], applicationActivities: nil)

    // This lines is for the popover you need to show in iPad
    activityViewController.popoverPresentationController?.sourceView = (sender as! UIButton)

    // This line remove the arrow of the popover to show in iPad
    activityViewController.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection.allZeros
    activityViewController.popoverPresentationController?.sourceRect = CGRect(x: 150, y: 150, width: 0, height: 0)

    // Anything you want to exclude
    activityViewController.excludedActivityTypes = [
        UIActivityTypePostToWeibo,
        UIActivityTypePrint,
        UIActivityTypeAssignToContact,
        UIActivityTypeSaveToCameraRoll,
        UIActivityTypeAddToReadingList,
        UIActivityTypePostToFlickr,
        UIActivityTypePostToVimeo,
        UIActivityTypePostToTencentWeibo
    ]

    self.presentViewController(activityViewController, animated: true, completion: nil)
}

上面的代码对iPhone和iPad均适用,因为在iOS 8中设置了新的popoverPresentationController时,它对iPad也适用。

在使用UIBarButtonItem的情况下,您需要替换以下行:

1
activityViewController.popoverPresentationController?.sourceView = (sender as! UIButton)

与此一起:

1
activityViewController.popoverPresentationController?.barButtonItem = (sender as! UIBarButtonItem)

希望对您有所帮助。