我正在做一些简单的测试,将CALayer添加到UIView中.在我的iPhone 4应用程序的主控制器类中,我实现了viewDidLoad方法:
- (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.
我想知道是不是因为我没有考虑视网膜显示?在这种情况下,最佳做法是什么?
添加了以下调试消息:
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
解决方法
setContentsScale无效
[ca setContentsScale:[[UIScreen mainScreen] scale]];
但是,如果我使用
[ca setFrame:self.view.bounds];
有用.