【发布时间】:2016-09-13 22:43:52
【问题描述】:
假设您有一个三角形图像,您想以不同的角度使用(例如,180 度、90 度)。
是否可以在 Storyboard 中旋转三角形图像,还是需要以编程方式进行?
【问题讨论】:
标签: ios xcode uiimageview autolayout storyboard
假设您有一个三角形图像,您想以不同的角度使用(例如,180 度、90 度)。
是否可以在 Storyboard 中旋转三角形图像,还是需要以编程方式进行?
【问题讨论】:
标签: ios xcode uiimageview autolayout storyboard
您可能可以创建一个 IBDesignable 和 IBInspectable UIView 子类,它具有旋转角度属性,并对其包含的图像应用变换。
IBInspectable 允许您在 IB 的属性检查器中公开自定义视图的自定义属性。
制作视图IBDesignable 允许您在 IB 中查看自定义视图对象的预览。
这是一个非常古老的线程,但我决定实现一个允许旋转的自定义 UIView,正如我所描述的。因为现在是 2021 年,所以我使用了 Swift:
@IBDesignable class RotatableView: UIView {
@objc @IBInspectable var rotationDegrees: Float = 0 {
didSet {
print("Setting angle to \(rotationDegrees)")
let angle = NSNumber(value: rotationDegrees / 180.0 * Float.pi)
layer.setValue(angle, forKeyPath: "transform.rotation.z")
}
}
}
这会在 Interface Builder 中产生以下内容:
【讨论】:
可以在用户定义的运行时属性中设置layer.transform.rotation.z。检查这个答案:https://stackoverflow.com/a/32150954/2650588
【讨论】:
以编程方式,这样的事情可以提供帮助:
//rotate rect
myImageView.transform = CGAffineTransformMakeRotation(M_PI_2); //90 degree//rotation in radians
//For 180 degree use M_PI
或者做一个这样的宏:
#define DEGREES_TO_RADIANS(degree) (M_PI * (degree) / 180.0)
并以这种方式使用:
CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(90));//here may be anything you want 45/90/180/270 etc.
更多:apple link
【讨论】:
myImageView.transform = CGAffineTransform(rotationAngle: CGFloat(M_PI_2 * 3))