11

主 UIView 包含两个子视图 -UIView_1UIView_2.
在 中UIView_2,有一个按钮可以显示或隐藏UIView_1
例如,当用户触摸按钮以显示 时UIView_1,然后UIView_1会向下滑动并UIView_2会随着 transition 向下推动
我对动画知之甚少。有人可以给我看一些示例代码以供参考吗?
我应该使用 CGAffineTransformMakeTranslation 吗?
谢谢。在此处输入图像描述

4

3 回答 3

20

你不需要这么复杂的东西。只需更改视图的框架大小。

    NSTimeInterval animationDuration = /* determine length of animation */;
    CGRect newFrameSize = /* determine what the frame size should be */;
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:animationDuration];
    theViewToChange.frame = newFrameSize;
    [UIView commitAnimations];
于 2011-12-17T04:27:01.640 回答
7

只需使用淡入/淡出效果隐藏/显示`

/显示/

sliderView.hidden = NO;
sliderView.alpha = 0.1;
[UIView animateWithDuration:0.25 animations:^{
    sliderView.alpha = 1.0f;
} completion:^(BOOL finished) {
    // do some
}];

/隐藏/

[UIView animateWithDuration:0.25 animations:^{
    sliderView.frame =  CGRectMake(130, 30, 0, 0);
    [sliderView setAlpha:0.1f];
} completion:^(BOOL finished) {
    sliderView.hidden = YES;
}];

`

于 2014-05-17T04:51:51.393 回答
3

这取决于你想做什么UIView_2

  1. 放在UIView_1下面UIView_2的界面生成器中。

  2. 大小UIView_2要占用下面的所有空间UINavigationBar

  3. 使用以下代码调整(使用uiview2_resized_rect)框架的大小UIView_2,或平移/移动框架UIView_2(使用uiview2_translated_rect):


CGRect uiview1_original_rect = UIView_1.frame;
CGRect uiview2_original_rect = UIView_2.frame;

CGRect uiview2_translated_rect = CGRectMake(uiview2_original_rect.origin.x, uiview2_original_rect.origin.y+uiview1_original_rect.size.height, uiview2_original_rect.size.width, uiview2_original_rect.size.height);

CGRect uiview2_resized_rect = CGRectMake(uiview2_original_rect.origin.x, uiview2_original_rect.origin.y+uiview1_original_rect.size.height, uiview2_original_rect.size.width, uiview2_original_rect.size.height-uiview1_original_rect.size.height);

[UIView animateWithDuration:0.300 delay:0.0 options:UIViewAnimationOptionCurveEaseInOut|UIViewAnimationOptionBeginFromCurrentState animations:^{ //uncomment this and comment out the other if you want to move UIView_2 down to show UIView_1 //UIView_2.frame = uiview2_translated_rect; UIView_2.frame = uiview2_resized_rect; } completion:^(BOOL finished) {

}];

于 2011-12-17T04:33:33.767 回答