2011-05-22 97 views
5

我正在做一些简单的CALayer添加到UIView的测试。在我的主控制器类的iPhone 4的应用程序的,我实现了viewDidLoad方法例如:iOS:self.view.bounds不填满整个窗口

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSLog(@"%s", __PRETTY_FUNCTION__); 

    CALayer* ca = [[CALayer alloc] init]; 
    [ca setBounds:self.view.bounds]; 

    [ca setBackgroundColor:[[UIColor blueColor] CGColor]]; 

    [self.view.layer addSublayer:ca]; 
} 

蓝色背景仅占据屏幕的1/4。

enter image description here

我不知道这是因为我没有带Retina显示屏考虑吗?这种情况下的最佳做法是什么?


添加了这些调试消息:

NSLog(@"frame w:%f h:%f", self.view.frame.size.width, self.view.frame.size.height); 
NSLog(@"bounds w:%f h:%f", self.view.bounds.size.width, self.view.bounds.size.height); 

输出:

frame w:320.000000 h:460.000000 
bounds w:320.000000 h:460.000000 
+0

'self.view.frame'的值是什么?你能证实吗? – 2011-05-22 06:38:34

+0

@Deepak:{width:320,height:460}。这个问题本身也增加了调试输出。 – 2011-05-22 19:26:23

回答

8

setContentsScale没有效果

[ca setContentsScale:[[UIScreen mainScreen] scale]]; 

但是,如果我用

[ca setFrame:self.view.bounds]; 

它的工作原理。

+0

+1好一个! '位置'为零时,剩下的内容离开屏幕。 – 2011-05-23 19:18:19

+0

@Deepak:我明白了!所以CALayer根据位于边界中心点的位置/锚点定位自己。非常感谢您的帮助。 – 2011-05-23 21:52:19

+0

你明白了。我只是解释。 :) – 2011-05-23 21:55:31