[英]How to observe Image rotation?
I have an ImageView called - (woowwww): ImageView 我有一个名为-(woowwww)的ImageView : ImageView
@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.