简体   繁体   English

如何观察图像旋转?

[英]How to observe Image rotation?

I have an ImageView called - (woowwww): ImageView 我有一个名为-(woowwww)的ImageViewImageView

@IBOutlet weak var ImageView: UIImageView!

... and I'd like to fire an event every time the transform -property of the ImageView changed. ...并且我想在ImageView的transform property每次更改时都触发一个事件。

An event should get called every time the ImageView get's rotated by maybe something like this: 每次旋转ImageView时,都应该通过以下方式调用一个事件:

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

To achieve this I tried to use some kind of KVO but obviously it is not working as expected... 为了达到这个目的,我尝试使用某种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")
}


Any help would be very appreciated! 任何帮助将不胜感激! Thanks. 谢谢。

Set "transform" in keyPath like below: keyPath设置“ transform”,如下所示:

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

then add below code: 然后添加以下代码:

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

            print("Changed \(newValue)")
        }

Hope it will help you. 希望对您有帮助。

在此处输入图片说明

keyPath should be nameOfObject.property so if imageView name is dd to listen to transform it's should dd.transform keyPath应该是nameOfObject.property因此,如果nameOfObject.property名称是dd以侦听转换,则应该是dd.transform

Try this 尝试这个

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)")
    }

}}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM