【问题标题】:How to addSubview with a position?如何添加带有位置的Subview?
【发布时间】:2011-03-31 22:25:08
【问题描述】:

我有这样的事情:

myViewController = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil];
[mainCanvas addSubview: myViewController.view];
self.view = mainCanvas;

它将被添加到 (0, 0) 位置,但我想将它添加到 (0, 100) 或其他位置。我该怎么做?

【问题讨论】:

    标签: ios objective-c uiview


    【解决方案1】:

    类似这样的:

    myViewController = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil];
    myViewController.view.frame = CGRectMake(0, 100, myViewController.view.frame.size.width, myViewController.view.frame.size.height);  
    [mainCanvas addSubview: myViewController.view];
    self.view = mainCanvas;
    

    【讨论】:

    • @applefreak 框架视图在其父视图坐标系中的位置。你的要求没有意义。
    • 这是最简洁的方式,甚至不需要启用掩码翻译。令人难以置信的是,就我而言,(0, 0, width, height) 必须明确声明,因为它不是默认行为。疯了!
    【解决方案2】:

    除了设置frame属性,还可以设置视图的center属性。

    【讨论】:

      【解决方案3】:

      在子视图上设置 frame 属性。

      【讨论】:

        【解决方案4】:

        这是我发现添加子视图的最佳方式,例如加载屏幕或您想要显示的内容,无论您是在 UIViewUIScrollView 还是 UITableView

        myViewController = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil]; 
        myViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
        [self.view addSubview:myViewController.view];
        self.view.bounds = myViewController.view.bounds;
        

        这将使 subView 无论您在 self.view 中的哪个位置全屏显示如果您处于视野的最顶端。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-23
          • 1970-01-01
          • 2012-11-10
          相关资源
          最近更新 更多