【发布时间】:2016-04-07 12:08:57
【问题描述】:
我正在尝试在选择它的单元格时旋转UILabel 180°。我尝试在图层上设置变换,尝试了 CABasicAnimation 和 UIView.animateWithDuration,但没有成功。
有没有人做过这方面的经验?
我无法调用 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
}
}
}
【问题讨论】:
-
请分享不起作用的代码。
标签: ios swift core-animation uiviewanimation uianimation