iPhone Dev - UIView框架和loadView

mk1*_*k12 1 iphone user-interface uiviewcontroller uiview loadview

我正在学习为iPhone开发(以编程方式,我不喜欢IB).我只使用IB作为帧的东西,所以我在IB中设计但只用它来检查每个控件的帧.我非常困惑的是UIView的框架.首先,如果你没有在视图控制器中实现loadView,它会自动创建一个空的UIView(我注意到它的黑色)并将其分配给self.view,对吗?框架怎么样?它会自动找出框架应该是什么吗?我的意思是,它需要有所不同,具体取决于是否有状态栏,是否有标签栏,工具栏,方向.在我的标签栏应用程序中,似乎无论我设置的uiview框架是什么,它看起来仍然很好.而且,UIView的框架似乎在IB中搞砸了.就像UIView占据整个窗口(状态栏除外)的y值是0,当它应该是20时,因为状态栏占据前20个像素.在IB中,标签栏控制器中的视图的值为411,即使它始于状态栏下方.每当我NSLog一帧(四个数字,view.frame.origin.x,view.frame ......等),x,y,宽度和高度总是为0 ..可以理解它的人请解释它我?谢谢!!

好的,这很奇怪......这个:

CGRect test = CGRectMake(0, 20, 320, 460);
NSLog(@"%d %d %d %d", test.origin.x, test.origin.y, CGRectGetWidth(test), CGRectGetHeight(test));
Run Code Online (Sandbox Code Playgroud)

给出输出:

0 0 0 1077149696
Run Code Online (Sandbox Code Playgroud)

??? 那是什么?

ken*_*eno 5

首先要注意的是CGRect的origin和size成员使用float,因此在NSLog语句中你需要使用%f,而不是%d.所以,例如,

NSLog(@"%f %f %f %f", test.origin.x, test.origin.y, test.size.width, test.size.height);
Run Code Online (Sandbox Code Playgroud)