我已经看过很多关于如何通过改变他们的alpha值(例如here)来淡入淡出iPhone图像的教程。
多数民众赞成,但我正在努力实现略微不同的东西;而不是整个图像淡入/淡出,我会将图像设置为动画,以便随着时间的推移它从图像的中心显示到边缘(反之亦然)。
因此,在动画开始时,我希望图像不会显示在屏幕上,然后在动画的持续时间内从中心开始逐位显示图像,直到我们到达结束和整个图像显示在屏幕上。
我无法找到这些方面的任何内容,有人知道这是否可以在iPhone上实现?任何可能有用的想法/链接?
答案 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];
现在,图像视图将从屏幕中心缩放以填充它。