4

我在做一些非常简单的事情时遇到了很多麻烦。我有一个 viewController 和一个 subViewController,它们都带有从 nib 加载的视图。为澄清起见,在笔尖中,父视图的大小为 1024 x 748,子视图的大小为 640 x 480。

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

[self.view addSubview:self.subViewController.view];
NSLog(@"subview.frame:%@",NSStringFromCGRect(self.subViewController.view.frame));

日志输出:

subview.frame:{{0, 0}, {640, 480}}

然后,只是为了测试一下,我使用 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));

日志输出:

after changing center. subview.frame:{{-320, -240}, {640, 480}}

现在我有一种感觉,可能是笔尖出了问题,我猜这与弹簧和支柱/尺寸和位置选项有关。我只能猜测是这个,因为这是我对 IB 最不了解的功能。

关于可能导致此问题的任何其他想法?关于如何在 IB 中设置视图控制器的视图,以便它们自动与其他视图控制器的视图对齐,你们有什么一般的提示吗?设置好之后, setCenter 是动态移动它们的正确方法吗?

4

2 回答 2

6

考虑到你在做什么,输出是正确的。点(0,0)是左上角。如果您将子视图的中心设置为此,那么子视图的左上角确实会是(-640/2, -480/2).

要使左上角对齐,请使用

[self.subViewController.view setCenter:CGPointMake(320.0,240.0)];
于 2011-03-18T19:12:18.540 回答
0

问题尚不清楚。如果您将中心设置为 0,0,那么您应该期望帧原点为 -320,看起来是 -240。也许你误解了 CGRect?CGRect 由原点和大小组成。Frame 是一个 CGRect。框架、大小和中心都是相关的,改变框架改变大小和中心,改变中心改变框架。

于 2011-03-18T19:11:11.333 回答