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」になるからです。