2016-09-05 50 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

问题解决!不胜感激 –