Swift 中没有动画的初始子视图旋转
Initial subview rotation without animation in Swift
我想在子视图中有一个缩放动画(在本例中它是一个 UILabel),但设置初始旋转而不设置动画。问题是它从初始旋转回到 0 度。
recordedTime?.transform = CGAffineTransform(scaleX: 0.1, y: 0.1)
recordedTime?.transform = CGAffineTransform(rotationAngle: 90 * (.pi/180))
view.addSubview(recordedTime!)
UIView.animate(withDuration: 0.50, delay: 0.0, options: [], animations: {
recordedTime?.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)
}, completion:nil)
我想我可以在动画中重复旋转变换,但这似乎是多余的,而且我的实际代码更复杂,因为它会检查我的屏幕方向,所以我不想再次重复该代码。
I suppose I could repeat the rotation transform in the animation, but that seems redundant
但这并不多余。由于视图的旋转和缩放在相同的 transform
属性 中编码,您别无选择:您必须始终设置 transform
属性 以包括旋转和缩放你想要的。
您可以创建属性来分别存储旋转和缩放,然后根据这些属性计算 transform
:
class ViewController: UIViewController {
@IBOutlet var recordedTime: UILabel!
private var recordedTimeRotation: CGFloat = 0 {
didSet { updateRecordedTimeTransform() }
}
private var recordedTimeScale: CGFloat = 1 {
didSet { updateRecordedTimeTransform() }
}
private func updateRecordedTimeTransform() {
var transform: CGAffineTransform = .identity
transform = transform.rotated(by: recordedTimeRotation)
transform = transform.scaledBy(x: recordedTimeScale, y: recordedTimeScale)
recordedTime?.transform = transform
}
private func run() {
recordedTimeScale = 0.1
recordedTimeRotation = .pi / 2
view.addSubview(recordedTime!)
UIView.animate(withDuration: 0.50, delay: 0.0, options: [], animations: {
recordedTimeScale = 1
}, completion:nil)
}
}
我想在子视图中有一个缩放动画(在本例中它是一个 UILabel),但设置初始旋转而不设置动画。问题是它从初始旋转回到 0 度。
recordedTime?.transform = CGAffineTransform(scaleX: 0.1, y: 0.1)
recordedTime?.transform = CGAffineTransform(rotationAngle: 90 * (.pi/180))
view.addSubview(recordedTime!)
UIView.animate(withDuration: 0.50, delay: 0.0, options: [], animations: {
recordedTime?.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)
}, completion:nil)
我想我可以在动画中重复旋转变换,但这似乎是多余的,而且我的实际代码更复杂,因为它会检查我的屏幕方向,所以我不想再次重复该代码。
I suppose I could repeat the rotation transform in the animation, but that seems redundant
但这并不多余。由于视图的旋转和缩放在相同的 transform
属性 中编码,您别无选择:您必须始终设置 transform
属性 以包括旋转和缩放你想要的。
您可以创建属性来分别存储旋转和缩放,然后根据这些属性计算 transform
:
class ViewController: UIViewController {
@IBOutlet var recordedTime: UILabel!
private var recordedTimeRotation: CGFloat = 0 {
didSet { updateRecordedTimeTransform() }
}
private var recordedTimeScale: CGFloat = 1 {
didSet { updateRecordedTimeTransform() }
}
private func updateRecordedTimeTransform() {
var transform: CGAffineTransform = .identity
transform = transform.rotated(by: recordedTimeRotation)
transform = transform.scaledBy(x: recordedTimeScale, y: recordedTimeScale)
recordedTime?.transform = transform
}
private func run() {
recordedTimeScale = 0.1
recordedTimeRotation = .pi / 2
view.addSubview(recordedTime!)
UIView.animate(withDuration: 0.50, delay: 0.0, options: [], animations: {
recordedTimeScale = 1
}, completion:nil)
}
}