【发布时间】:2016-06-28 12:26:58
【问题描述】:
我对 ios 动画比较陌生,我认为我为 UIView 制作动画的方法有问题。
我将从 UI 屏幕截图开始,以更准确地描述我的问题:
有一个带有两个标签和彩色填充圆圈的 tableView 单元格
每当我向单元格引入新值时,我都想为这个最左边的灯泡设置动画,使其看起来充满红色。
这是BadgeView的实现,基本上就是前面提到的最左边的实心圆
class BadgeView: UIView {
var coeff:CGFloat = 0.5
override func drawRect(rect: CGRect) {
let topRect:CGRect = CGRectMake(0, 0, rect.size.width, rect.size.height*(1.0 - self.coeff))
UIColor(red: 249.0/255.0, green: 163.0/255.0, blue: 123.0/255.0, alpha: 1.0).setFill()
UIRectFill(topRect)
let bottomRect:CGRect = CGRectMake(0, rect.size.height*(1-coeff), rect.size.width, rect.size.height*coeff)
UIColor(red: 252.0/255.0, green: 95.0/255.0, blue: 95.0/255.0, alpha: 1.0).setFill()
UIRectFill(bottomRect)
self.layer.cornerRadius = self.frame.height/2.0
self.layer.masksToBounds = true
}
}
这是我实现不均匀填充的方式 - 我引入了我在 viewController 中修改的系数。
在我的 cellForRowAtIndexPath 方法中,我尝试使用带有回调的自定义按钮为这个形状设置动画
let btn:MGSwipeButton = MGSwipeButton(title: "", icon: img, backgroundColor: nil, insets: ins, callback: {
(sender: MGSwipeTableCell!) -> Bool in
print("Convenience callback for swipe buttons!")
UIView.animateWithDuration(4.0, animations:{ () -> Void in
cell.pageBadgeView.coeff = 1.0
let frame:CGRect = cell.pageBadgeView.frame
cell.pageBadgeView.drawRect(frame)
})
return true
})
但它什么也不做,只是打印到控制台
:CGContextSetFillColorWithColor:无效的上下文 0x0。如果要查看回溯,请设置 CG_CONTEXT_SHOW_BACKTRACE 环境变量。
虽然我很想知道正确的答案和方法,但出于教育目的,很高兴知道为什么此代码不起作用。 提前致谢
【问题讨论】:
标签: ios swift uitableview core-animation