我想要一个uiview的汇总动画。所以我正在为mainscrollview和rollupboard制作动画。所以在viewDidLoad中我将这两个视图的框架设置为:
dashRollUpStand=[[UIImageView alloc]initWithFrame:CGRectMake(0,346,320,0)];
mainScrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(10,346,300,0)];
我还有这个mainScrollView的许多子视图。
现在我使用以下代码加载此视图并使用汇总动画:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1];
[UIView setAnimationCurve:UIAnimationCurveLinear];
[dashRollUpStand setFrame:CGRectMake(0,0,320,346)];
[mainScrollView setFrame:CGRectMake(10,9,300,337)];
[UIView commitAnimations];
此累积动画在iphone中运行正常。但是在iphone视网膜显示屏上这个动画一点都不流畅。那么我怎样才能在iphone视网膜显示屏上保持平滑。
答案 0 :(得分:0)
您是否有理由在viewDidLoad中添加视图并将其置于屏幕外?
在我看来,你应该这样做。在下面的代码中, containerView
是包含您的观看次数的视图,toView
是您正在翻转到的视图,而fromView
是您正在从翻转的视图。
[UIView transitionWithView:containerView
duration:1.0
options:UIViewAnimationOptionTransitionFlipFromRight
animations:^{
[fromView removeFromSuperview];
[containerView addSubview:toView];
}
completion:NULL];
我还选择使用自iOS 4以来基于块的动画/转换API the recommended way。
由于您实际上并未转换视图,即使您的原始代码确实如此。你可以使用普通的动画块来代替
[UIView animateWithDuration:1.0
animations:^{
[dashRollUpStand setFrame:CGRectMake(0,0,320,346)];
[mainScrollView setFrame:CGRectMake(10,9,300,337)];
}
completion:NULL];
答案 1 :(得分:0)
问题不在于您使用的动画类型,但更可能的是您的观点。首先尝试确保动画视图中的子视图是不透明的,不透明是UIView的属性,但是如果视图的alpha小于1,则覆盖它。渲染系统需要更多的clicles来混合清晰的视图,如果你可以选择不透明的。