2016-09-05 48 views
0

所以我成立了一個的UIImageView和標籤,並把它們放在一起,以一個單一的UIView(如下圖所示我的圖片)與渲染UIView的問題來的UIImage

enter image description here

而且我做了以下渲染這個視圖到UIImage,並分享它會帶來UIActivityViewController。

@IBOutlet var viewBack: UIView! 
    @IBOutlet var dismissButton: UIButton! 
    @IBOutlet var shareButton: UIButton! 
    @IBOutlet var imageView: UIImageView! 
    @IBOutlet var hello: UILabel! 



    var image = UIImage() 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     shareButton.backgroundColor = UIColor.grayColor() 
     shareButton.setTitleColor(UIColor.whiteColor(), forState: .Normal) 
     shareButton.layer.cornerRadius = 10 
     // Do any additional setup after loading the view. 
     dismissButton.backgroundColor = UIColor.grayColor() 
     dismissButton.layer.cornerRadius = 10 
     viewBack.backgroundColor = UIColor(white: 1, alpha: 0.0) 
     UIGraphicsBeginImageContextWithOptions(viewBack.bounds.size, viewBack.opaque, 0.0) 
     viewBack.drawViewHierarchyInRect(viewBack.bounds, afterScreenUpdates: false) 
     imageView.drawViewHierarchyInRect(imageView.frame, afterScreenUpdates: false) 
     hello.drawViewHierarchyInRect(hello.frame, afterScreenUpdates: false) 
     let snapshotImageFromMyView = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 
     print(snapshotImageFromMyView) 
     image = snapshotImageFromMyView 




    } 
    @IBAction func dismiss(sender: AnyObject) { 
     dismissViewControllerAnimated(true, completion: nil) 
    } 

    @IBAction func share(sender: AnyObject) { 
     var shareArray : [AnyObject] = [] 
     shareArray.append(image) 
     let activityVC = UIActivityViewController(activityItems: shareArray, applicationActivities: nil) 
     if let popover = activityVC.popoverPresentationController{ 
      popover.sourceView = sender as? UIView 
      popover.sourceRect = sender.bounds 
     } 

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

所以viewBack是UIView包含兩個子視圖--UIImage和標籤。而且似乎是我正常設置了所有的渲染過程。但是當我真的分享它時,結果真的很奇怪,一張黑色的圖片。顯然,我將圖像視圖設置爲特定圖像,並且標籤也不是空的。我不知道這裏有什麼問題,希望有人能幫助我。提前致謝。 enter image description here

回答

1

您正試圖在正確呈現之前從視圖創建。您可以在didAppear中創建圖像或點擊分享按鈕。試試這個修改過的代碼

@IBOutlet var viewBack: UIView! 
@IBOutlet var dismissButton: UIButton! 
@IBOutlet var shareButton: UIButton! 
@IBOutlet var imageView: UIImageView! 
@IBOutlet var hello: UILabel! 



var image = UIImage() 
override func viewDidLoad() { 
    super.viewDidLoad() 
    shareButton.backgroundColor = UIColor.grayColor() 
    shareButton.setTitleColor(UIColor.whiteColor(), forState: .Normal) 
    shareButton.layer.cornerRadius = 10 
    // Do any additional setup after loading the view. 
    dismissButton.backgroundColor = UIColor.grayColor() 
    dismissButton.layer.cornerRadius = 10 
    viewBack.backgroundColor = UIColor(white: 1, alpha: 0.0) 

} 
@IBAction func dismiss(sender: AnyObject) { 
    dismissViewControllerAnimated(true, completion: nil) 
} 

@IBAction func share(sender: AnyObject) { 

    UIGraphicsBeginImageContextWithOptions(viewBack.bounds.size, viewBack.opaque, 0.0) 
    viewBack.drawViewHierarchyInRect(viewBack.bounds, afterScreenUpdates: false) 
    imageView.drawViewHierarchyInRect(imageView.frame, afterScreenUpdates: false) 
    hello.drawViewHierarchyInRect(hello.frame, afterScreenUpdates: false) 
    let snapshotImageFromMyView = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
    print(snapshotImageFromMyView) 
    image = snapshotImageFromMyView 

    var shareArray : [AnyObject] = [] 
    shareArray.append(image) 
    let activityVC = UIActivityViewController(activityItems: shareArray, applicationActivities: nil) 
    if let popover = activityVC.popoverPresentationController{ 
     popover.sourceView = sender as? UIView 
     popover.sourceRect = sender.bounds 
    } 

    self.presentViewController(activityVC, animated: true, completion: nil) 
} 
+0

問題解決!不勝感激 –