从左到右收缩UIView

时间:2013-01-24 04:16:00

标签: ios uiview shrink

我有以下代码从左到右缩小UIView并在动画结束后将其从超级视图中删除:

    UIView* coverView = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 300, 50)];
    UIImageView* imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"swipe_rl.png"]];
    [imageView setContentMode:UIViewContentModeScaleToFill];
    [imageView setFrame:coverView.bounds];
    [coverView addSubview:imageView];
    [coverView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
    coverView.clipsToBounds = YES;
    [self.view addSubview:coverView];
    CGRect frame = coverView.frame ;
    [UIView animateWithDuration:5.0 animations:^{
    [coverView setFrame:CGRectMake(frame.origin.x + frame.size.width, frame.origin.y, 0, frame.size.height)];
    } completion:^(BOOL finished){
        [coverView removeFromSuperview];
    }];

但是,图片的左侧部分会停留,图片的右侧部分会消失,因为您可以在图片中看到。出于特定目的,我希望左侧部分消失,右侧部分保留。我该怎么办?

对于那些想知道我为什么这么想的人:

- Basically, I want a display-from-left-to-right animation (It means you have a picture and the left of the picture appears first and the the middle and the whole picture appears)
- I do this by adding a second view above the first picture and then shrink the second view from left to right. The first view will then be revealed from left to right.
- Look at http://i1289.photobucket.com/albums/b510/yenmach/right_to_left_zps80b9e9bb.jpg and http://i1289.photobucket.com/albums/b510/yenmach/left_to_right_zps9214dc4a.jpg

shrink from the beginning

shrink in the middle of animation

3 个答案:

答案 0 :(得分:3)

//试试这个.......

 CGRect frame = coverView.frame ;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:5.0];
[UIView setAnimationDelay:0];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
imageView.frame = CGRectMake(frame.origin.x - 2*frame.size.width,imageView.frame.origin.y, frame.size.width, frame.size.height);
coverView.frame = CGRectMake(frame.origin.x + frame.size.width, frame.origin.y, frame.size.width, frame.size.height);
[UIView commitAnimations];

答案 1 :(得分:0)

不完全是一个解决方案,而是一种解决方法,如果您要使用具有一致背景(理想情况下为纯色)的图像,您可以让另一个视图动画覆盖图像视图,然后在动画完成后删除它们

答案 2 :(得分:0)

尝试更改UIImageView contentMode属性,

[imageView setContentMode: UIViewContentModeRight];

我有同样的要求,当时这对我来说很好。