在iOS 4中使用块完成处理程序进行动画

3
我希望在旋转设备时动画化我的子视图移动,将 alpha 改为 0,将视图移动到新位置并将 alpha 重置为 1。
didRotateFromInterfaceOrientation 中使用此代码会导致视图闪烁、快速淡出,然后重新出现。我希望避免这种行为。
[UIView animateWithDuration:kAnimationDuration animations:^{
    anObject.alpha = 0.0;
    CGRect newFrame = anObject.frame;
    newFrame.origin.x = newX;
    newFrame.origin.y = newY;
    newFrame.size.width = newWidth;
    newFrame.size.height = newHeight;
    anObject.frame = newFrame;
} completion:^ (BOOL finished){
    if (finished) {
        anObject.alpha = 1.0;
    }
}];

有没有办法避免这种闪烁?谢谢。
1个回答

4
也许在完成时实际上可以动画化Alpha值?而不是闪烁它? :)
[UIView animateWithDuration:kAnimationDuration animations:^{
anObject.alpha = 0.0;
CGRect newFrame = anObject.frame;
newFrame.origin.x = newX;
newFrame.origin.y = newY;
newFrame.size.width = newWidth;
newFrame.size.height = newHeight;
anObject.frame = newFrame;
} completion:^ (BOOL finished){
if (finished) {
[UIView animateWithDuration:kAnimationDuration
                                 animations:^{
                                     anObject.alpha = 1;} 
} 
}];

祝贺, Krzysztof Zabłocki


它使得渐变更加优美,但仍然有点突然闪烁。感谢您的帮助。 - joec

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接