ios - UIView transitionFromView 不在容器中设置动画

标签 ios animation uiview transition

我正在使用 UIView transitionFromView 在两个 View 之间切换。我目前正在 UIView 子类中执行以下操作:

UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"img.png"]];

imgView.frame = CGRectMake(0, 0, 100, 100);

UIView *detailView = [[UIView alloc] initWithFrame:imgView.frame];
detailView.backgroundColor = [UIColor redColor];

detailView.frame = imgView.frame;

[self addSubview:imgView];

[UIView transitionFromView:imgView toView:detailView duration:1.0 
                   options:UIViewAnimationOptionTransitionFlipFromLeft
                completion:^(BOOL finished){

                }
 ]; 

这按预期工作。转换按预期执行。问题是我需要在包含先前代码的 View 的 subview 中进行转换。所以,我将所有东西都放在一个容器中,并尝试为其制作动画:

UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"img.png"]];

imgView.frame = CGRectMake(0, 0, 100, 100);

UIView *container = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 500, 500)];
UIView *detailView = [[UIView alloc] initWithFrame:imgView.frame];
detailView.backgroundColor = [UIColor redColor];

detailView.frame = imgView.frame;

[container addSubview:imgView];

[self addSubview:container];

[UIView transitionFromView:imgView toView:detailView duration:1.0 
                   options:UIViewAnimationOptionTransitionFlipFromLeft
                completion:^(BOOL finished){

                }
 ]; 

但在这种情况下,动画不会运行。相反,我只看到没有过渡的最终结果。谁能帮我弄清楚这两种情况有何不同?

此处描述了同样的问题,但我认为现有的“解决方案”不足以完全描述此行为。 Transition behavior using transitionFromView and transitionWithView

最佳答案

考虑将动画延迟到另一个运行循环,使用 dispatch_after 和 performSelector:withObject:afterDelay:

或者在添加 subview 后使用[CATransaction flush]

更多信息请访问 http://andrewmarinov.com/working-with-uiviews-transition-animations/

关于ios - UIView transitionFromView 不在容器中设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10395042/

相关文章:

java - 动态图形编程(动画)

python - 在 Python 中动画化 3D 粒子的运动

ios - UITextView 在插入文本之前返回不准确的原点

html - 动画 SVG 直升机桨叶

具有缩放功能的 iOS UIView/UIScrollView 覆盖

IOS:如何动态排列 UIViews?

ios - 用于计时器动画的 CABasicAnimation 不适用于 iOS 8+

iphone - 为什么这会导致内存泄漏?

ios - 使用 UIBezierPath 异步剪辑 UIImage

ios - 页面 View Controller 不显示点