iphone:以编程方式展开和折叠UIView

时间:2011-03-01 06:31:00

标签: iphone xcode ipad

我是iPhone / iPad开发的新手。 你可以帮我编程一下吗?我想以编程方式扩展/折叠UIView。

这个可展开/可折叠的视图将包含一些文本字段和标签,它们应该随该视图出现和消失

4 个答案:

答案 0 :(得分:12)

假设您在UIViewController类中有一个UIView实例,如下所示:

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(x, y, w1, h1)];
[self.view addSubview:view];

根据要求设置视图可见性,就像我在这里做的那样..当控制器加载它的视图时,我没有显示视图..

[view setHidden:YES];

保持一个标志来检查视图实例的可见性..让我说isViewVisible是我的标志来检查视图的可见性..我在开始时将它设置为NO ..

isHelpViewVisible = NO;

我在这里编写了一个动作方法(viewClicked)来展开和折叠视图对象,将此动作方法提供给按钮实例,它将起作用。

- (void)viewClicked:(id)sender {

    if (!isViewVisible) {
        isViewVisible = YES;
        [view setHidden:NO];
        [UIView beginAnimations:@"animationOff" context:NULL]; 
        [UIView setAnimationDuration:1.3f];
        [view setFrame:CGRectMake(x, y, w1, h1)];
        [UIView commitAnimations];
    } else {
        isViewVisible = NO;
        [view setHidden:NO];
        [UIView beginAnimations:@"animationOff" context:NULL]; 
        [UIView setAnimationDuration:1.3f];
        [view setFrame:CGRectMake(x, y, width, hight)];
        [UIView commitAnimations];
    }

}

并将文本域和标签对象作为子视图添加到视图对象中,并将动画设置为这些对象..它将起作用。

答案 1 :(得分:3)

取代以上内容:

[UIView beginAnimations:@"animationOff" context:NULL];
[UIView setAnimationDuration:1.3f];
[view setFrame:CGRectMake(x, y, w1, h1)];
[UIView commitAnimations];

使用新方式制作动画:

[UIView animateWithDuration:1.3f animations:^{
    self.frame = CGRectMake( x1, x2, w1, h1);
} completion:^(BOOL finished) {
    // this gives us a nice callback when it finishes the animation :)
}];

答案 2 :(得分:1)

要在其父级中更改UIView的大小/位置,只需更改其frame属性:

CGRect newFrame = myView.frame;
newFrame.origin.x = newX;
newFrame.origin.y = newY;
newFrame.size.width = newWidth;
newFrame.size.height = newHeight;
myView.frame = newFrame;

答案 3 :(得分:0)

你可以试试这个

CGRect frame = [currentView frame];
frame.size.width = 999;//Some value
frame.size.height = 444;//some value
[currentView setFrame:frame];
无论何时想要增加/减少视图大小

,都可以执行此操作