У меня есть несколько UIImageView
s, разбросанных по виду.
@IBOutlet var leftIVs: [UIImageView]!
@IBOutlet var topIVs: [UIImageView]!
@IBOutlet var rightIVs: [UIImageView]!
Я пытаюсь создать функцию, используя UIView.animate...
функции и свойство 'transform', которое приводит все эти UIImageView
в центр 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)
}
Я использую эту функцию c stati:
extension CGPoint {
static func -(lhs: CGPoint, rhs: CGPoint) -> CGPoint {
return CGPoint(x: rhs.x - lhs.x, y: rhs.y - lhs.y)
}
}
ПРИМЕЧАНИЕ. Кроме того, я буду приносить эти изображения затем вернитесь в исходное положение , для которого я буду использовать CGAffineTransform.identity
Изображения не отображаются в центре. Как мне этого добиться? Заранее спасибо!