【发布时间】:2020-02-17 10:02:47
【问题描述】:
我有多个UIImageViews,分布在一个视图中。
@IBOutlet var leftIVs: [UIImageView]!
@IBOutlet var topIVs: [UIImageView]!
@IBOutlet var rightIVs: [UIImageView]!
我正在尝试使用UIView.animate... 函数和'transform' 属性创建一个函数,它将所有这些UIImageViews 带到superview 的中心。我正在使用以下代码:
let performInitialTransformation: ((UIImageView)->()) = { (card) in
let cardCenter = CGPoint(x: card.frame.midX, y: card.frame.midY)
let viewCenter = CGPoint(x: self.view.bounds.midX, y: self.view.bounds.midY)
let deltaPoint = cardCenter - viewCenter //also tried (viewCenter - cardCenter)
UIView.animate(withDuration: 0.5, animations: {
card.transform = CGAffineTransform.init(translationX: deltaPoint.x, y: deltaPoint.y)
}) { (done) in
}
}
for card in topIVs {
performInitialTransformation(card)
}
for card in leftIVs {
performInitialTransformation(card)
}
for card in rightIVs {
performInitialTransformation(card)
}
我正在使用这个静态函数:
extension CGPoint {
static func -(lhs: CGPoint, rhs: CGPoint) -> CGPoint {
return CGPoint(x: rhs.x - lhs.x, y: rhs.y - lhs.y)
}
}
注意:另外,我会将这些图像带回原来的位置,我将使用CGAffineTransform.identity
图像未显示在中心。我怎样才能做到这一点?提前致谢!
【问题讨论】:
-
当前行为是什么?
-
基本上它们会向中心移动一点,但不会在中心堆积。左侧边缘附近的图像堆叠在中心的左侧。同样,右侧的那个堆叠在靠近中心顶部的位置。
标签: ios swift uiviewanimation cgpoint