UIWindow bounds / frame为null

时间:2011-11-03 10:48:23

标签: iphone ios xcode4.2

我正在创建一个没有nib文件的ios应用程序,并希望在应用程序委托中初始化窗口,如下所示:

CGRect screenBounds = [[UIScreen mainScreen] bounds];
self.window = [[[UIWindow alloc] initWithFrame:screenBounds] autorelease];
self.window.backgroundColor = [UIColor greenColor];

NSLog(@"%@", self.window.bounds);

窗口出现,我可以看到我定义的绿色。当我调试self.window时,我会看到我刚刚定义的帧的边界,但是当我想访问bounds属性时,它返回null。与框架相同。有什么区别?

当我想要接下来初始化视图时,它将无法工作,因为未定义帧/边界来初始化该视图:

// create root view
RootView* rootView = [[[RootView alloc] initWithFrame:self.window.bounds] autorelease];

我做错了什么?

2 个答案:

答案 0 :(得分:6)

是的,这不会起作用

NSLog(@"%@", self.window.bounds);

窗口的边界不是对象,因此%@不能用于显示它:)

首先尝试将CGRect转换为NSString *

NSLog(@"%@", NSStringFromCGRect(self.window.bounds));

这应该会为您提供更多调试信息,以帮助您解决问题:)

NB%@只需为对象调用description并显示该内容。

答案 1 :(得分:0)

您应该使用NSLog框架的格式说明符:

NSLog(@"x=%.1f, y=%.1f, width=%.1f, height=%.1f", 
      self.window.bounds.origin.x, 
      self.window.bounds.origin.y, 
      self.window.bounds.size.width, 
      self.window.bounds.size.height);