2015-01-13 20 views
7

Tôi đang phát triển một phần của ứng dụng để khi bạn nhấn vào nút chia sẻ, nó cho phép bạn chia sẻ ảnh chụp màn hình ngay lập tức với một tin nhắn. Tôi đã không thể sản xuất/chia sẻ ảnh chụp màn hình và khi tôi nhấn vào nút chia sẻ, ứng dụng chỉ cho phép tôi sao chép văn bản mặc định hoặc "Mail" văn bản mặc định của tôi, không cho phép tôi đăng lên Facebook, Twitter, Tin nhắn , và hơn thế nữa.Chia sẻ ảnh chụp màn hình trong Bộ điều khiển xem hoạt động - Swift

func shareButtonPress() { 

    var postPhrase = "Just hit \(highscore)! Beat it! #SwypIt" 

    //Generate the screenshot 
    UIGraphicsBeginImageContext(view.frame.size) 
    view.layer.renderInContext(UIGraphicsGetCurrentContext()) 
    var image = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    var postImage = UIImage(named: "\(image)") 

    var activityViewController : UIActivityViewController = UIActivityViewController(activityItems: [postPhrase, postImage!], applicationActivities: nil) 

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

} 

Cách tốt nhất để thực hiện điều này là gì? Cảm ơn!

Trả lời

10

Đây là cách tôi xử lý chia sẻ trong ứng dụng của tôi.

func socialShare(#sharingText: String?, sharingImage: UIImage?, sharingURL: NSURL?) { 
    var sharingItems = [AnyObject]() 

    if let text = sharingText { 
     sharingItems.append(text) 
    } 
    if let image = sharingImage { 
     sharingItems.append(image) 
    } 
    if let url = sharingURL { 
     sharingItems.append(url) 
    } 

    let activityViewController = UIActivityViewController(activityItems: sharingItems, applicationActivities: nil) 
    activityViewController.excludedActivityTypes = [UIActivityTypeCopyToPasteboard,UIActivityTypeAirDrop,UIActivityTypeAddToReadingList,UIActivityTypeAssignToContact,UIActivityTypePostToTencentWeibo,UIActivityTypePostToVimeo,UIActivityTypePrint,UIActivityTypeSaveToCameraRoll,UIActivityTypePostToWeibo] 
    self.presentViewController(activityViewController, animated: true, completion: nil) 
} 

Tôi đã loại trừ một số tùy chọn chia sẻ bằng .excludedActvityTypes.

Sau đó, bất cứ khi nào bạn nhấn nút chia sẻ có nó gọi đây là

socialShare(sharingText: "Just hit \(highscore)! Beat it! #SwypI", sharingImage: UIImage(named: "The screenshot you are saving"), sharingURL: NSURL(string: "http://itunes.apple.com/app/")) 

Lý do bạn không thấy Twitter và Facebook như tùy chọn chia sẻ là bởi vì bạn cần phải đăng nhập vào chúng trong các cài đặt trên iPhone. Không phải ứng dụng riêng lẻ.

Hy vọng điều này sẽ hữu ích.

+0

Cảm ơn bạn rất nhiều! Đúng thứ tôi cần! – tdh

+0

Đánh dấu câu trả lời của tôi là chính xác, vì vậy nó đã được trả lời và upvote xin vui lòng. – PoisonedApps

+0

Tôi sẽ làm cách nào để triển khai ảnh chụp màn hình dưới dạng hình ảnh? Tôi đã sử dụng phương pháp của bạn và nó đã hoạt động, cho đến khi tôi cố gắng triển khai mã màn hình. Ảnh chụp màn hình sẽ trống và Tin nhắn vẫn không phải là tùy chọn. Cảm ơn! ; Tôi đánh giá cao câu trả lời của bạn, nhưng tôi sợ tôi không có đủ danh tiếng để upvote nó. Tôi sẽ đánh dấu nó chính xác, và tôi sẽ đảm bảo xây dựng danh tiếng để upvote nó. – tdh

0

Sử dụng SLComposeViewController.

import Social 

func shareButtonPress() { 

    var postPhrase = "New high score \(highscore)!" 

    //Generate the screenshot 
    UIGraphicsBeginImageContext(view.frame.size) 
    view.layer.renderInContext(UIGraphicsGetCurrentContext()) 
    var image = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    var postImage = UIImage(named: "\(image)") 

    let shareToFacebook = SLComposeViewController(forServiceType: SLServiceTypeFacebook) 
    shareToFacebook.setInitialText(postPhrase) 
    shareToFacebook.addImage(postImage) 
    presentViewController(shareToFacebook, animated: true, completion: nil) 
} 

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Reference/SLComposeViewController_Class/

+0

'ViewController.swift: 207: 36: Giá trị của loại tùy chọn 'CGContext?' chưa được mở; ý bạn là sử dụng '!' hoặc '?'? 'Nhưng lỗi xây dựng tại dòng' view.layer.renderInContext (UIGraphicsGetCurrentContext()) ' – Gank

Các vấn đề liên quan