iPhone - 是否可以创建一个动画,从中心向外显示图像?

时间:2011-05-28 00:22:34

标签: iphone objective-c animation

我已经看过很多关于如何通过改变他们的alpha值(例如here)来淡入淡出iPhone图像的教程。

多数民众赞成,但我正在努力实现略微不同的东西;而不是整个图像淡入/淡出,我会将图像设置为动画,以便随着时间的推移它从图像的中心显示到边缘(反之亦然)。

因此,在动画开始时,我希望图像不会显示在屏幕上,然后在动画的持续时间内从中心开始逐位显示图像,直到我们到达结束和整个图像显示在屏幕上。

我无法找到这些方面的任何内容,有人知道这是否可以在iPhone上实现?任何可能有用的想法/链接?

3 个答案:

答案 0 :(得分:4)

应该很容易实现 - 创建一个UIImageView来保存东西,将contentMode设置为UIViewContentModeCenter,然后使用CoreAnimation块来动画帧中的变化,从零宽度/高度开始,并居中到你的整个区域想要报道。

E.g。

/* coming into here, imageView is a suitable UIImageView,
   frameToFill is a CGRect describing the area the image
   view should cover when fully unfurled */

// set up image view: content mode is centre so that the current
// frame doesn't affect image sizing, and we'll be keeping the same
// centre throughout so it won't move. The initial frame is on the
// centre and of zero size. The view contents are clipped to the view's
// bounds so that the changing frame does actually cut off the image
imageView.contentMode = UIViewContentModeCenter;
imageView.frame = CGRectMake(frameToFill.origin.x + frameToFill.size.width*0.5f,
                             frameToFill.origin.y + frameToFill.size.height*0.5f,
                             0.0f, 0.0f);
imageView.clipsToBounds = YES;

// set up an animation block, lasting 3 seconds, in which the
// only thing animated is the view's frame, expanding back out
// to the original
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:3.0f];
    imageView.frame = frameToFill;
[UIView commitAnimations];

视图的边缘将是坚硬的矩形。如果你想要更精细的东西,你可能无法用CoreAnimation实现它;下降到CoreGraphics级别可能是当天的顺序。

答案 1 :(得分:2)

一个简单的(也可能不是最好的)尝试的东西(不能保证它有效)是创建一个imageView并绕过角落,直到它是圆形的,如下所示:

    [imageView.layer setCornerRadius:60.0f];
    [imageView.layer setMasksToBounds:YES];
    [imageView.layer setBorderWidth:0.0f];

将初始imageView设置为小(1px乘1px)。然后使用一些简单的动画代码:

[UIView beginAnimations:nil context:NULL]; {
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationDelay:2.0];
    [UIView setAnimationDuration:1.0];
    [UIView setAnimationDelegate:self];
    // set the imageView to the size you want here
} [UIView commitAnimations];

答案 2 :(得分:0)

试试这段代码。

创建一个imageView。

UIImageView *imgv = [[UIImageView alloc]initWithFrame:
                                          CGRectMake(0, 0, 0, 0)];
imgv.image = [UIImage imageNamed:@"black.png"];

//position the imageview to the center of the screen.
 imgv.center = self.view.center;
    [self.view addSubview:imgv];
    [imgv release];

//now give the imageview a new frame of full size with an animation 

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];

//i am assuming that your full frame is 320x480
    imgv.frame = CGRectMake(0, 0, 320, 480);

[UIView commitAnimations];

现在,图像视图将从屏幕中心缩放以填充它。