8
我遇到CALayer陰影問題。以下是我對我的看法:向圖層添加陰影會導致視網膜外觀退化
UIImage *screenshot = [SomeClass getScreenshot:mainView.view]; //full screen snap
CGFloat scale = [SomeClass getScreenScale]; // 1 or 2 for retina
CGFloat width = mainView.view.frame.size.width;
CGRect r1 = CGRectMake(0, 0, width*scale, 300*scale);
CGRect u1 = CGRectMake(0, 0, width, 300);
CGImageRef ref1 = CGImageCreateWithImageInRect([screenshot CGImage], r1);
l1 = [[UIButton alloc] initWithFrame:u1];
UIImage *img1 = [UIImage imageWithCGImage:ref1];
[l1 setBackgroundImage:img1 forState:UIControlStateNormal];
[l1 setAdjustsImageWhenHighlighted:NO];
CGImageRelease(ref1);
[mainView.view addSubview:l1];
好的,這樣工作得很好。添加的圖像是視網膜分辨率。但是,只要我爲圖層添加陰影,它就會跳轉到標準分辨率,使按鈕顯得模糊不清。
l1.layer.shadowOffset = CGSizeMake(0, 0);
l1.layer.shadowRadius = 20;
l1.layer.shadowColor = [UIColor blackColor].CGColor;
l1.layer.shadowOpacity = 0.8f;
l1.layer.shouldRasterize = YES;
是否有任何理由爲什麼添加陰影會導致這個問題?
感謝您的建議,但它似乎並不奏效。仍然恢復到標準分辨率。 :/ – 2011-06-05 13:55:31
我自己試了一下。原因是糟糕的渲染是l1.layer.shouldRasterize = YES;您還需要設置l1.layer.rasterizationScale = scale。 – marcus 2011-06-06 05:27:00
這是問題所在。感謝您的幫助! – 2011-06-06 07:35:36