我正在尝试为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的起源始终是左上角,但在这个特别的观点实际上是中上(或中间 - 中间,不确定。)我做错了什么?
EDIT1:
以下是具有正确位置的框架的控制台输出:
注意导航栏现在如何正确定位:
但x-coord不是250(因为它应该是,因为menu.width + sub-menu.width = 250。)
EDIT2:
我最终放弃了。问题在于自动生成的UINavigationBar,它是由UINavigationViewController创建的。我似乎无法弄清楚如何配置它。如果有人知道答案,我会打开问题。
答案 0 :(得分:10)
CGRect
的中心是CGPoint
和origin.x + ( size.width / 2 )
创建的origin.y + ( size.height / 2 )
。
答案 1 :(得分:4)
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);
这将使按钮位于中心,无论设备是什么
答案 2 :(得分:1)
CGRectMake只创建(x,y,width,height)的结构。