我想在带有 segue 的两个 View 之间传递一个 UIImage。问题是我的 UIImage 在第二个 View Controller 中显示为白色。
继续:
var screenShot = UIImage()
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "screenshotEmbed") {
let svc = segue.destinationViewController as! screenshotViewController
svc.toPass = self.screenshot
}
第二个 View Controller :
class screenshotViewController: UIViewController {
@IBOutlet var screenshotView: UIImageView!
var toPass = UIImage()
override func viewDidLoad() {
super.viewDidLoad()
self.screenshotView.image = self.toPass
}
我的 UIImage 只是一个截图,这里是函数:
func captureScreen() -> UIImage {
var window: UIWindow? = UIApplication.sharedApplication().keyWindow
window = UIApplication.sharedApplication().windows[0]
UIGraphicsBeginImageContextWithOptions(window!.frame.size, window!.opaque, 0.0)
window!.layer.renderInContext(UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image;
}
编辑。按钮上的屏幕截图存储:
@IBAction func photoAction(sender: AnyObject) {
self.screenShot = captureScreen()
}
我已经尝试了很多东西,但仍然是空白(不是空的,因为内存地址很好)。
最佳答案
不确定您的 screenshotImage
对象是否有 Image。
我试过下面的代码,它工作正常。
import UIKit
class ViewController: UIViewController {
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "screenshotEmbed") {
let svc = segue.destinationViewController as! ScreenshotViewController
svc.toPass = captureScreen()
}
}
func captureScreen() -> UIImage {
var window: UIWindow? = UIApplication.sharedApplication().keyWindow
window = UIApplication.sharedApplication().windows[0]
UIGraphicsBeginImageContextWithOptions(window!.frame.size, window!.opaque, 0.0)
window!.layer.renderInContext(UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image;
}
}
此代码的结果:
项目 Sample了解更多信息。
关于ios - 使用 segue 传递 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36918115/