6

我正在尝试为 iPad 应用程序创建多个视图。首先,我创建了一个菜单视图,然后根据菜单创建了一个带有坐标的子菜单视图。所以它看起来像这样:

在此处输入图像描述

我做了什么:

self.view = [[UIView alloc] initWithFrame:CGRectMake(self.parentViewController.view.frame.size.width, 0, 150, screenHeight)];

但现在在子菜单上,我正在尝试创建内容视图,它是一个 UINavigationController。尝试做同样的事情,我得到了这个结果:

在此处输入图像描述

我在做什么(这次在子菜单视图控制器上创建框架):

CGRect frame = CGRectMake(self.view.frame.origin.x + self.view.frame.size.width,
                            0,
                            [[UIScreen mainScreen] bounds].size.width - self.view.frame.origin.x - self.view.frame.size.width,
                            [[UIScreen mainScreen] bounds].size.height);

这是不言自明的,但是,我只是得到子菜单的原点并添加它的宽度,这样我就可以获得正确的边缘坐标。

经过多次尝试,我设法让它工作,因为我注意到 CGRectMake 正在使用 UINavigationController 视图的中心来安排它的位置。所以下面的代码:

CGRect frame = CGRectMake(self.view.frame.origin.x + self.view.frame.size.width + 259,
                            0,
                            [[UIScreen mainScreen] bounds].size.width - self.view.frame.origin.x - self.view.frame.size.width,
                            [[UIScreen mainScreen] bounds].size.height);

产生正确的位置。

这是怎么回事?我认为 CGRectMake 原点总是在左上角,但在这个特别的观点上实际上是中上(或中中,不确定)。我做错了什么?

编辑1:

这是具有正确位置的框架的控制台输出:

在此处输入图像描述

注意导航栏现在是如何正确定位的:

在此处输入图像描述

但是 x 坐标不是 250(应该是,因为 menu.width + sub-menu.width = 250。)

编辑2:

我最终放弃了。问题在于由 UINavigationViewController 创建的自动生成的 UINavigationBar。我似乎无法弄清楚如何配置它。如果有人知道答案,我会留下问题。

4

3 回答 3

13

a 的中心CGRectCGPointorigin.x + ( size.width / 2 )and创建的origin.y + ( size.height / 2 )

于 2013-08-12T15:32:09.507 回答
5
UIButton* btn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 70, 70)];
btn.center = CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2);

无论设备是什么,这都会使按钮位于中心

于 2015-07-28T00:14:09.687 回答
1

CGRectMake just creates an stucture of (x,y, witdh, height).
It your part to set the correct values.

于 2013-08-12T14:34:13.163 回答