从双方改变uiview框架

时间:2012-10-12 07:11:30

标签: iphone objective-c ios quartz-graphics

您好我想制作一个帧更改动画。但我在互联网上找不到类似的东西。我知道如何动画帧变化,但棘手的部分是,例如我有一个正方形,我希望它缩小到中心。那么我如何改变框架来实现呢?

我是否必须更改框架宽度和高度以及框架的原点,或者是否有更简单的解决方案?

任何有关如何操作的帮助或参考将非常感谢! 提前谢谢!

4 个答案:

答案 0 :(得分:3)

CGRect previousRect = view.layer.bounds;
CGRect newRect = previousRect;
newRect.size = size; // In your case define the new size (CGSize size)
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"bounds"];

animation.fromValue = [NSValue valueWithCGRect:previousRect];
animation.toValue = [NSValue valueWithCGRect:newRect];


[view.layer addAnimation:animation forKey:@"bounds"];

答案 1 :(得分:1)

在开始动画之前设置帧,在动画块内部将帧更改为指向实际帧的中心。您需要设置高度/宽度以及原点。这就是通常的做法。

答案 2 :(得分:1)

您需要使用视角:

CGPoint *center = view.center;
view.frame = CRectMake (0,0,100,200); //set new frame;
view.center = center;
// here you should start animation

答案 3 :(得分:1)

如果您需要View Shrinking Code,请点击此处。

    myView.transform=CGAffineTransformMakeScale(0.1, 0.1);
    [UIView beginAnimations:@"animationExpand" context:NULL];
    [UIView setAnimationDuration:0.4];
    myView.transform=CGAffineTransformMakeScale(1, 1);
    [UIView setAnimationDelegate:self];
    [UIView commitAnimations];

这是为了使视图更大。如果你想让视图缩小,那么只需将变换线相互替换即可。

希望它有所帮助! :)