我有UIScrollView放置元素(元素从上到下放置),如何删除一行并平滑移动项目而不重绘?
答案 0 :(得分:1)
至于删除视图,您需要使用CATransition
。移除时,UIView
动画将不起作用,因为此概念在动画上下文中不可动画。但是,过渡的概念是有道理的:
CATransition *transition = [CATransition animation];
transition.duration = 0.4;
[someView.layer addAnimation:transition forKey:kCATransition];
[someView removeFromSuperview];
请注意,对图层进行更改以及将动画添加到图层的顺序无关紧要,只要它发生在同一堆栈框架内(即,只要它发生在图层之前)下一个主循环循环)。
至于改变现状,使用UIView
动画方法:
[UIView animateWithDuration:0.4 animations:
^{
// Change the frames, bounds, etc. of any number of views here
}];
答案 1 :(得分:0)
嗯,移动UIViews(和子类)的简单方法是使用Core Animation。
举一个例子,我们假设您要将UIImageView
10像素向上移动,这就是我要这样做的方式:
[UIView beginAnimations:@"animation" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationDuration:1.0]; //In seconds
int newPosY = myImage.frame.origin.y - 10;
[myImage setFrame:CGRectMake(self.frame.origin.x, newPosY, myImage.frame.size.width, myImage.frame.size.height)];
[UIView commitAnimations];
编辑:(感谢LucasTizma)由于Apple不推荐使用此方法,因此您最好使用animateWithDuration:animations:
或其中的任何变体。查看this