UIView setCenter问题

don*_*ain 4 view objective-c interface-builder viewcontroller

我在做一些非常简单的事情上遇到了很多麻烦.我有一个viewController和一个subViewController,两者都有从nib加载的视图.为了澄清,父视图的大小为1024 x 748,而子视图中的subView为640 x 480.

在viewController的viewDidLoad中,我添加了subViewController的视图,如下所示:

[self.view addSubview:self.subViewController.view];
NSLog(@"subview.frame:%@",NSStringFromCGRect(self.subViewController.view.frame));
Run Code Online (Sandbox Code Playgroud)

日志输出:

subview.frame:{{0, 0}, {640, 480}}
Run Code Online (Sandbox Code Playgroud)

然后,为了测试一下,我使用setCenter尝试在同一位置重新定位父视图中的子视图,如下所示:

CGPoint newCenter = CGPointMake(0,0);  //should stay at the same position..
[self.subViewController.view setCenter:newCenter];
NSLog(@"after changing center.subview.frame:%@",NSStringFromCGRect(self.subViewController.view.frame));
Run Code Online (Sandbox Code Playgroud)

日志输出:

after changing center. subview.frame:{{-320, -240}, {640, 480}}
Run Code Online (Sandbox Code Playgroud)

现在我感觉有些东西可能会被搞砸了,并且猜测它与弹簧和支柱/尺寸和位置选项有关.我只能猜到这是因为这是我对IB的最不了解的功能.

关于什么可能导致这个问题的任何其他想法?你们有没有关于如何在IB中设置viewcontrollers视图的一般提示,以便它们自动定位与其他viewcontrollers的视图一致?在设置之后,setCenter是动态移动它们的正确方法吗?

Pen*_*One 6

鉴于您正在做的事情,输出是正确的.重点(0,0)是左上角.如果将子视图的中心设置为此,则子视图的左上角确实如此(-640/2, -480/2).

要使左上角对齐,请使用

[self.subViewController.view setCenter:CGPointMake(320.0,240.0)];
Run Code Online (Sandbox Code Playgroud)