Objective-C我可以访问self.view但不能访问self.view.frame

Gra*_*t M 8 objective-c uiview

我可以访问并显示self.view并在日志中查看框架,但是当我尝试访问self.view.frame时,我得到null.下面是日志输出

NSLog(@"Show self.view:%@",self.view);
NSLog(@"Show self.view.frame:%@",self.view.frame);
Run Code Online (Sandbox Code Playgroud)

-

2010-03-28 11:08:43.373 vivmed_CD_Tab[20356:207] Show self.view:<UITableView: 0x4001600; frame = (0 0; 320 583); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x3b21270>>
2010-03-28 11:08:43.373 vivmed_CD_Tab[20356:207] Show self.view.frame:(null)
Run Code Online (Sandbox Code Playgroud)

谁能解释为什么self.view.framenullself.view显示帧?我的目标是改变框架大小.

干杯,格兰特

Six*_*tto 19

您发布的代码中的一个问题是您将框架(a CGRect)打印为对象,这将无法正常工作.尝试:

NSLog(@"Show self.view.frame: %u", self.view.frame);  // as a pointer

NSLog(@"Show self.view.frame: %@", NSStringFromCGRect(self.view.frame));  // as a string
Run Code Online (Sandbox Code Playgroud)

  • 那就对了!CGRect的前两个字段为零,因此Obj-C运行时将其解释为具有空类指针的对象.如果框架的原点不同,那么你就会崩溃. (4认同)