1

我有一个UIImageView带有框架的对象,例如 x = 0,y = 100,宽度 = 320,高度 = 200。

现在我想做一个动画,让这个图像可以逐渐显示,这意味着显示部分的高度从0逐渐增长到200。

我试图通过调整图像框架的大小来实现这一点,但如果我这样做了,图像本身就会相应地缩放,这不是我想要的。

我还尝试将“模式”设置UIImageView为“顶部”而不是“缩放以适应”。但是因为我在 XCode 检查器中这样做,所以加载的图像是,例如,img@2x.png所以如果我选择“顶部”,图像会大 2 倍。

顺便说一句,我也尝试过使用覆盖矩形并移动它。但是这种方法会一起覆盖其他背景图片,所以行不通。

有人可以帮忙吗?

4

4 回答 4

1

您可以使用支持 imageView 的 CALayer 的 mask 属性(例如imgView.layer.mask)。您应该能够对其进行动画处理。

于 2013-07-05T13:32:41.710 回答
0

可以使用这样的东西

image.transform = CGAffineTransformMakeScale(0.01, 0.01);
[UIView animateWithDuration:5.0 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
    // animate it to the identity transform (100% scale)
    image.transform = CGAffineTransformIdentity;
} completion:^(BOOL finished){
    // if you want to do something once the animation finishes, put it here
}];
于 2013-07-05T14:00:55.217 回答
0

您可以像这样添加它:

UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0,0,320,0)];
view.clipsToBounds = YES;
UIImageView *imgView = [[UIImageView alloc]initWithFrame:CGRectMake:(0,0,320,200)];
imgView.contentMode = UIViewContentModeScaleAspectFit;
imgView.image = [UIImage imageNamed:@"your image"];
[view addSubview:imgView];
[imgView release];
[self.view addSubview:view];

现在你这样做:

[UIView beginAnimations:@"" context:nil];
[UIView setAnimationDuration:1.5];
[view setFrame:CGRectMake(0,0,320,200)];
[UIView commitAnimations];

这是经过测试的!

于 2013-07-05T13:53:46.527 回答
0

首先给你的高度Imageview0

并取一个NSTimer (这里带有方法名称doAnimation并给出它TimeInterVal1秒。

这里方法在1doAnimation后触发。编写方法代码。doAnimation

-(void)doAnimation
{
    //// here you can give animation duration as you want. 

    [UIView animateWithDuration:0.35 animations:^{
         self.myImageView.frame=CGRectMake(0, 100, 320,200);

  }];
}

此代码可能会在您的情况下对您有所帮助:

于 2013-07-05T13:45:24.300 回答