我想添加一个UIView的一个过渡式的缩放动画是这样的:
^
|
<---.--->
|
v
视图开始少许帧(centerParent.x,centerParent.y,20,20),然后改变到(centerParent.x,centerParent.y,300,300)。
但是,当我改变帧我必须要改变它,因为视图的现在的位置(0.0),而不是它的中心点。 有谁知道如何做到这一点?
谢谢
我想添加一个UIView的一个过渡式的缩放动画是这样的:
^
|
<---.--->
|
v
视图开始少许帧(centerParent.x,centerParent.y,20,20),然后改变到(centerParent.x,centerParent.y,300,300)。
但是,当我改变帧我必须要改变它,因为视图的现在的位置(0.0),而不是它的中心点。 有谁知道如何做到这一点?
谢谢
随着方法您目前使用(不使用变换而只是调整视图),你只需要重置视图的原点或中心)。 最简单的是中心:
view.frame = CGRectMake(0, 0, 20, 20);
CGPoint center = view.center;
[UIView animateWithDuration: 1.0f animations:^{
view.frame = CGRectMake(0, 0, 300, 300);
view.center = center;
}];
您也可以通过移动减去1/2来自x和y尺寸变化的差异复位的来源,但这更多的数学:
view.frame = CGRectMake(0, 0, 20, 20);
CGPoint origin = view.frame.origin.
[UIView animateWithDuration: 1.0f animations:^{
origin.x -= (300 - 20) / 2;
origin.y -= (300 - 20) / 2;
view.frame = CGRectMake(origin.x, origin.y, 300, 300);
}];
为了使视图缩小,同时保持它自己的中心是容易的,但你需要使用转换。 这里是一个代码。 只需添加并连接一个观点,把它命名为zoomerView。
在这个例子中,我只添加这结束了主视图触摸。
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
CGPoint center = zoomerView.center;
[UIView animateWithDuration:1 animations:^{
zoomerView.transform = CGAffineTransformScale(zoomerView.transform, 1.2, 1.2);
}];
}
希望这可以帮助你
尝试这个
[UIView animateWithDuration:secs delay:1.0 options:option
animations:^{
yourview.transform = CGAffineTransformScale(view.transform, 100.0, 100.0);
}
completion:nil];