【问题标题】:iphone: expand and collapse a UIView programmaticallyiphone:以编程方式展开和折叠 UIView
【发布时间】:2011-07-06 07:03:03
【问题描述】:

我对 iPhone/iPad 开发非常陌生。 你能帮我以编程方式创建它吗?我想以编程方式展开/折叠 UIView。

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

【问题讨论】:

    标签: iphone xcode ipad


    【解决方案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;
    

    【讨论】:

      【解决方案2】:

      你可以试试这个

      CGRect frame = [currentView frame];
      frame.size.width = 999;//Some value
      frame.size.height = 444;//some value
      [currentView setFrame:frame];
      
      每当您想增加/减少视图大小时,您都可以按照此操作

      【讨论】:

        【解决方案3】:

        假设您在 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];
            }
        
        }
        

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

        【讨论】:

          【解决方案4】:

          从上面替换以下内容:

          [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 :)
          }];
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-07-01
            • 2015-08-19
            • 2017-05-07
            • 1970-01-01
            • 1970-01-01
            • 2014-12-18
            • 1970-01-01
            • 2010-10-29
            相关资源
            最近更新 更多