如何动画扩展和缩小uiview到位?

时间:2011-06-22 11:29:27

标签: iphone objective-c ipad

我有一系列uiviews,我想创建一个动画,其中按钮按下事件将从底部展开uiview并显示有关视图的更多信息。按下另一个按钮会将视图缩小回原始状态。

我该如何处理?

在水平滚动视图中有一系列uiviews,如coverflow。我想通过点击按钮显示有关每个uiview的其他信息。

如果您需要更多信息,请发表评论。

TIA,

Praveen S

2 个答案:

答案 0 :(得分:9)

此代码将扩展您的视图...反过来缩小它

CGRect tempFrame=view.frame;
tempFrame.size.width=200;//change acco. how much you want to expand
tempFrame.size.height=200;
[UIView beginAnimations:@"" context:nil];
[UIView setAnimationDuration:0.2];
view.frame=tempFrame;
[UIView commitAnimations];

答案 1 :(得分:1)

为此使用此代码

在.h文件中

#import <UIKit/UIKit.h>
@interface ExpandedViewController : UIViewController
{
    UIView * expandiView;
    BOOL viewExpanded;
}
- (IBAction)expandOrShrinkView:(id)sender;
@end

并在您的.m文件中

- (void)viewDidLoad
{
    [super viewDidLoad];

    aview = [[UIView alloc] initWithFrame:CGRectMake(10, 10, 100, 100)];
    aview.backgroundColor = [UIColor redColor];
    [self.view addSubview:aview];

    viewExpanded = NO;
}

在按钮操作中添加此代码

- (IBAction)expandOrShrinkView:(id)sender {
    [UIView animateWithDuration:0.8f delay:0.0f options:UIViewAnimationOptionTransitionNone animations: ^{
        if (!viewExpanded) {
            viewExpanded = YES;
           aview.frame = CGRectMake(10, 10, 100, 200);
        }else{
            viewExpanded = NO;
           aview.frame = CGRectMake(10, 10, 100, 100);
        }
    } completion:nil];  
}

当您第一次单击该按钮时,它将从底部展开视图,当您第二次单击该按钮时,它将从底部缩小视图,将框架大小更改为您的需要..

如果你想在另一个按钮中使用缩小功能而不是像这样使用两种动作方法

- (IBAction)expandView:(id)sender {
        [UIView animateWithDuration:0.8f delay:0.0f options:UIViewAnimationOptionTransitionNone animations: ^{
               aview.frame = CGRectMake(10, 10, 100, 200);
        } completion:nil];  
    }

- (IBAction)ShrinkView:(id)sender {
        [UIView animateWithDuration:0.8f delay:0.0f options:UIViewAnimationOptionTransitionNone animations: ^{
               aview.frame = CGRectMake(10, 10, 100, 100);
        } completion:nil];  
    }