Я пытаюсь повернуть UILabel на 180 °, когда выбирается ячейка, которая содержит его. Я попытался настроить преобразование на уровне, я пробовал CABasicAnimation и UIView.animateWithDuration без везения.Вращающаяся метка внутри UITableViewCell
У кого-нибудь есть опыт в прошлом?
Я не могу вызвать reloadData, потому что метка находится внутри ячейки аккордеона, а выбор вызывает открытие или закрытие аккордеона. reloadData переопределяет анимацию из beginUpdates/endUpdates.
Вот что я пробовал:
func rotate180Degrees(duration: CFTimeInterval = 1.0, completionDelegate: AnyObject? = nil) {
let rotateAnimation = CABasicAnimation(keyPath: "transform.rotation")
rotateAnimation.fromValue = 0.0
rotateAnimation.toValue = CGFloat(M_PI)
rotateAnimation.duration = duration
if let delegate: AnyObject = completionDelegate {
rotateAnimation.delegate = delegate
}
self.layer.addAnimation(rotateAnimation, forKey: nil)
}
Как это:
UIView.animateWithDuration(0.1) {
cell.chevronLabel.transform = CGAffineTransformMakeRotation(CGFloat(M_PI))
}
Вот моя модель клетки, если оно соответствует:
class SideMenuAccountTypeCell: UITableViewCell {
@IBOutlet weak var accountLabel: UILabel!
@IBOutlet weak var abbreviationLabel: UILabel!
@IBOutlet weak var circleView: CircleView!
@IBOutlet weak var chevronLabel: UILabel!
private (set) var items = [Item]()
class Item {
var isHidden: Bool
var value: AnyObject
init(_ hidden: Bool = true, value: AnyObject) {
self.isHidden = hidden
self.value = value
}
}
class HeaderItem: Item {
init (value: AnyObject) {
super.init(false, value: value)
}
}
func append(item: Item) {
self.items.append(item)
}
func removeAll() {
self.items.removeAll()
}
func expand(headerIndex: Int) {
self.toggleVisible(headerIndex, isHidden: false)
}
func collapse(headerIndex: Int) {
self.toggleVisible(headerIndex, isHidden: true)
}
private func toggleVisible(headerIndex: Int, isHidden: Bool) {
var header = headerIndex
header += 1
while header < self.items.count && !(self.items[header] is HeaderItem) {
self.items[header].isHidden = isHidden
header += 1
}
}
}
Просьба поделиться кодом, который не работает. – Apurv