我正在尝试在选择UIView
时UITableViewCell
淡入淡出。在 xib 文件中,我将视图设置opacity
为YES
和。alpha
0.4
在cellForRowAtIndexPath
,(我也试过把它放进去didSelectRowAtIndexPath
)我有:
CABasicAnimation* fadeAnim = [CABasicAnimation animationWithKeyPath:@"opacity"];
fadeAnim.fromValue = [NSNumber numberWithFloat:1.0];
fadeAnim.toValue = [NSNumber numberWithFloat:0.0];
fadeAnim.duration = 1.0;
[cell.shade.layer addAnimation:fadeAnim forKey:@"opacity"];
当单元格出现在屏幕上时,它会变成黑色(不透明 1.0),渐变到 0.0,然后跳到 0.4。我只希望在点击时改变单元格的不透明度。
在didSelectRowAtIndexPath
中,我有:
if (cell.shade.layer.opacity > 0.5) {
[cell.shade.layer setOpacity:0.0];
} else {
[cell.shade.layer setOpacity:1.0];
}
当我在 的第一行中断时didSelectRowAtIndexPath
,当我运行时po cell.shade.layer.opacity
,LLVM 告诉我它是0.4
. 我跑了之后[cell.shade.layer setOpacity:1.0]
还是这样0.4
。是什么阻止了 xib alpha 属性被覆盖?
我也试过:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationDelay:1.0];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
if (cell.shade.alpha > 0.5) {
[cell.shade setAlpha:0.0];
} else {
[cell.shade setAlpha:1.0];
}
[UIView commitAnimations];
但结果是一样的。
我不想放入动画,setSelected:
因为将代码放入“setSelected or
didSelect should be the same, and I want the new view to stay visible after it's selected, so conceptually it makes sense to put the code in
didSelect”中的结果。