gpt4 book ai didi

ios - 覆盖 UIImageView 的图像 getter/setter 方法

转载 作者:搜寻专家 更新时间:2023-10-30 22:59:57 25 4
gpt4 key购买 nike

我将 UIImageView 子类化,以便每次设置图像属性时都会出现动画。以下是成功的:

import UIKit

class AnimatedImageView: UIImageView {

var img: UIImage! {
get {
return self.image
}
set {
self.image = newValue

UIView.animateWithDuration(0.5, delay: 0.4, usingSpringWithDamping: 0.2, initialSpringVelocity: 5.0, options: .CurveEaseIn, animations: {_ in

self.transform = CGAffineTransformMakeScale(1.1, 1.1);

}, completion: {_ in
self.transform = CGAffineTransformIdentity;
})
}
}

这并不奇怪。我将 UIImageView 子类化并添加了一个名为“img”的全新变量,它反过来修改了 UIImageView 的“图像”属性。

问题是最终用户仍然可以想象地改变 AnimatedImageView 的“图像”属性。

import UIKit

class AnimatedImageView: UIImageView {

override var image: UIImage! {
get {
return self.image
}
set {
self.image = newValue

UIView.animateWithDuration(0.5, delay: 0.4, usingSpringWithDamping: 0.2, initialSpringVelocity: 5.0, options: .CurveEaseIn, animations: {_ in

self.transform = CGAffineTransformMakeScale(1.1, 1.1);

}, completion: {_ in
self.transform = CGAffineTransformIdentity;
})
}
}

果然这会导致堆栈溢出,因为当我调用 self.image = newValue 时,它会重复调用我在子类中覆盖的 setter 方法。那么,什么是覆盖 UIImageView 上“图像”属性的 getter/setter 方法的正确方法

最佳答案

只需使用 super.image 来代替,这将防止循环。

关于ios - 覆盖 UIImageView 的图像 getter/setter 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34054245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com