如何观察图像旋转?

How to observe Image rotation?

我有一个名为 - (woowwww) 的 ImageView:ImageView

@IBOutlet weak var ImageView: UIImageView!

...我想在每次 ImageView 的 transform-属性 改变时触发一个事件。

每次 ImageView 旋转可能像这样时,都应该调用一个事件:

self.ImageView.transform = CGAffineTransform(rotationAngle: CGFloat(10))

为了实现这一点,我尝试使用某种 KVO 但显然它没有按预期工作...

override func viewDidLoad() {
    super.viewDidLoad()
    self.ImageView.addObserver(self.ImageView.transform, forKeyPath: "test", options: .new, context: nil)
}


func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutableRawPointer) {
    print("changed")
}


如有任何帮助,我们将不胜感激!谢谢

keyPath 中设置 "transform",如下所示:

imgView.addObserver(self, forKeyPath: "transform", options: .new, context: nil)

然后添加以下代码:

 override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
        if let newValue = change?[.newKey] as? NSObject {

            print("Changed \(newValue)")
        }

希望对您有所帮助。

keyPath 应该是 nameOfObject.property 所以如果 imageView 名称是 dd 来监听转换它应该是 dd.transform

试试这个

class ViewController: UIViewController {

@IBOutlet weak var dd: UIImageView!
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

   self.addObserver(self, forKeyPath: "dd.transform", options: .new, context: nil)


   self.dd.transform = CGAffineTransform(rotationAngle: CGFloat(10))

}


override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    if let newValue = change?[.newKey] as? NSObject {

        print("Changed \(newValue)")
    }

}}