如何使用位置添加子视图?

31

我有类似这样的东西:

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

这将会被添加到位置 (0, 0),但是我想要将它添加到 (0, 100) 或其他位置。我该如何操作?

4个回答

56

像这样:

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,框架就是视图在其父视图坐标系中的位置。你所要求的没有意义。 - Mark Amery
这是最干净的方法,甚至不需要启用掩码翻译。令人难以置信的是,在我的情况下,(0, 0, width, height) 必须显式声明,因为它不是默认行为。太疯狂了! - Angad

12

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


8

设置子视图的帧属性。


7

这是我发现的最好的添加子视图的方法,比如加载屏幕或者想要在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;

通过将子视图添加到您当前在self.view中的位置,而不是将其定位在左上角并仅在视图顶部时完全显示,可以使子视图无论您在self.view中的位置如何都以全屏方式显示。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接