我正在创建一个没有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];
我做错了什么?
答案 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);