繁体   English   中英

如何在不使用两个视图控制器的情况下为两个视图之间的过渡设置动画?

[英]How to animate transition between two views without using two view controllers?

我正在尝试模拟一副纸牌,其中在屏幕上滑动可使下一张纸牌从右侧进入显示,覆盖当前可见的纸牌。 我知道如何使用两个视图控制器和自定义序列进行编程,但是我想保持简单。 因此,我想留在一个相同的视图控制器中,将当前视图复制到一个临时视图中,绘制新视图,然后为新视图设置动画,以从右侧向后漂移并覆盖旧视图。 这是我的尝试:

- (IBAction)SwipeLeft:(id)sender
{   UIView *sv = self.view;
    [self Layout]; // this is where the next card is drawn
    UIView *dv = self.view;

    dv.center = CGPointMake(sv.center.x + sv.frame.size.width, sv.center.y);
    sv.center = CGPointMake(sv.center.x, sv.center.y);

    [UIView animateWithDuration:0.3
                     animations:^
     {   dv.center = CGPointMake(sv.center.x, sv.center.y);
         sv.center = CGPointMake(sv.center.x - sv.frame.size.width, sv.center.y);
     }];

    NSLog(@"Swipe left");
}

当我运行此代码时,我确实看到新卡已正确进入屏幕,但是,“旧”视图立即消失,并在动画开始之前变成黑屏。

我该如何纠正?

显然,此代码不起作用,因为两个指针都指向相同的存储位置。 我决定以其他方式解决我的问题。 我创建屏幕快照,而不是尝试复制View对象,而是将UIImage复制到View对象中,在绘制新屏幕时覆盖旧屏幕副本下的屏幕,而不是对该View对象进行动画处理。 可能是更智能的解决方案。 效果很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM