【发布时间】:2021-06-03 04:37:03
【问题描述】:
我做了一个 UIImageView 的子类。我使用它的函数setupView() 在 viewDidLoad() 中设置每个 DirectionView 对象的框架,它工作得很好。但是当我在触发按钮时使用相同的函数重置 DirectionView 对象的框架时,新的框架值不是我所期望的。
调试区显示的x、y、width和height值都是正确的。但是,我使用print("Original frame: \(self.frame)") 打印出来的帧值显示了一组不同的值。
为什么会这样?以及如何解决?
class DirectionView: UIImageView {
override init(image: UIImage?) {
super.init(image: image)
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
func setupView(_ degree: Double, showSigInfo: Bool) {
let rotationAngle = degree.toRadians
var height: Double = 375 / 2
let width = height / 47 * 37
let x = 375 / 2 - width / 2
let y = 0.0
self.frame = CGRect(x: x, y: y, width: width, height: height)
print("Original frame: \(self.frame)")
self.contentMode = .scaleAspectFit
self.setAnchorPoint(CGPoint(x: 0.5, y: 1.0))
UIView.animate(withDuration: 0.0) {
self.transform = CGAffineTransform(rotationAngle: rotationAngle)
}
}
}
【问题讨论】:
-
在设置框架之前添加这一行:
self.translatesAutoresizingMaskIntoConstraints = true -
嗨@RajaKishan,感谢您的建议,但这不会改变结果。
标签: ios swift uiimageview resize