基于这个问题的代码(如何使用 Swift 在 UIImage 中获取像素的颜色?),我正在尝试在点击按钮时运行一个函数。这是我到目前为止的代码:
@IBOutlet weak var graphImage: UIImageView!
var image : UIImage?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
func getPixelColor(pos: CGPoint) -> UIColor {
var pixelData = CGDataProviderCopyData(CGImageGetDataProvider(self.image!.CGImage))
var data : UnsafePointer<UInt8> = CFDataGetBytePtr(pixelData)
var pixelInfo : Int = ((Int(image!.size.width) * Int(pos.y) + Int(pos.x)*4))
let r = CGFloat(data[pixelInfo])
let g = CGFloat(data[pixelInfo]+1)
let b = CGFloat(data[pixelInfo]+2)
let a = CGFloat(data[pixelInfo]+3)
return UIColor(red: r, green: g, blue: b, alpha: a)
}
@IBAction func playTapped(sender: AnyObject) {
var c : CGFloat = 100.0
var d : CGFloat = 100.0
getPixelColor(CGPoint(x:c,y:d))
}
但是,每当我点击iOS模拟器中的播放按钮时,应用程序都会崩溃,并且在函数getPixelColor的第一行收到警告"致命错误:在解开可选值时意外发现nil"。我在这里做错了什么/我需要添加什么?
很简单。根据此处的代码,您确实正在解开一个nil
对象。您的实例变量 image
永远不会初始化为任何内容...所以你试图用!
强行解开它,但它实际上是nil
.