我根本无法让它工作,我认为这很简单,但没有运气。
- (void) animate {
UIView *viewA = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 300.0f, 100.0f)];
[viewA setBackgroundColor:[UIColor blueColor]];
UIView *viewB = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 300.0f, 100.0f)];
[viewB setBackgroundColor:[UIColor brownColor]];
UIView *container = [[UIView alloc] initWithFrame:CGRectMake(10.0f, 10.0f, 300.0f, 100.0f)];
[container addSubview:viewA];
[self.view addSubview:container];
[UIView transitionWithView:container
duration:0.4
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:^{
[[[container subviews] objectAtIndex:0] removeFromSuperview];
[container addSubview:viewB];
}
completion:^(BOOL finished){
}];
}
文档建议您这样做,制作容器,添加/删除要在其间翻转的两个子视图。
我无法让它发挥作用。它只会显示viewA,然后是viewB,就像跳过动画部分一样,但是执行了块?
如果我使用[UIView transitionWithView:container
切换self.view
中的容器,则会翻转整个视图(可疑),但我无法通过self.view
的2个子视图执行此操作。< / p>
没有办法解决这个问题吗?
我希望做一些类似于iPad 照片的应用,其中图片会翻转并缩放到全屏。
我真的希望有人可以帮助我,提前谢谢你。
答案 0 :(得分:-3)
你不能在分块内放置分号。如果你想在那里做两件事,用“,”来划分它们。 如果你想要的话,CurveEase可能会很好。
这应该有效。
[UIView transitionWithView:container
duration:0.4
options:UIViewAnimationOptionTransitionFlipFromLeft | UIViewAnimationOptionCurveEaseInOut
animations:^{
[[[container subviews] objectAtIndex:0] removeFromSuperview],
[container addSubview:viewB];
}
completion:^(BOOL finished){
}];
如果没有,请考虑制作视图实例变量,并确保在尝试为它们设置动画之前分配它们。如果你想按下按钮动画,你可以直接使用发送者,如果整个视图是UIButton。
我希望它有所帮助。