我的CALayers的分辨率出現問題,放大後看起來很模糊。我知道有很多關於它的帖子,但是在閱讀了很多帖子之後,我無法找到一個解決方案,但我很困惑。普通CALayer在放大時變得模糊
狀態: 該應用程序有一個UIViewController與UIView。在這個UIView下有一個CALayer,用CGPath定義它的形狀,添加爲[[self layer] addSublayer:myCALayer]。如果用戶點擊按鈕,有一定數量的其他CALayer被添加爲主CALayer的子層(myLayer - > [myLayer addSublayer:Layer])。我的情況和網上發現的帖子之間的區別是,我沒有UIImages,UIImageViews等,只有樸素和基本CALayers具有一定的backgroundColor。沒有UIScrollViews只有UIGestureRecognizers(tap,doubleTap,Pinch和Pan)。所有這些東西都很好。
問題: 當我放大CALayers變得模糊。
這是問題的一個形象:
這裏是我的代碼:
這對UIView的定義主要的CALayer:
- (id)initWithFrame:(CGRect)frame
{
[super initWithFrame:frame];
(…)
perfil = [[CALayer alloc] init];
perfilDelegate = [[perfilLayerDelegate alloc] init];
[perfil setDelegate:perfilDelegate];
[perfil setBounds:CGRectMake(0, 0, wideP, heigthP/2)];
[perfil setPosition:CGPointMake(wideP/2, heigthP*3/4)];
[perfil setShouldRasterize:TRUE];
[perfil setRasterizationScale:[[perfil valueForKeyPath:@"transform.scale"] floatValue]];
[[self layer] addSublayer:perfil];
(…)
}
這些都是當用戶點擊一個按鈕時在UIView上定義的其他子層:
for (int i=0; i<[numLayers count]; i++)
{
CALayer *Layer = [[CALayer alloc] init];
punt = [[numLayers objectAtIndex:i] CGPointValue];
[Layer setBounds:CGRectMake(0.0, 0.0, wideL, heigthL)];
[Layer setBorderWidth:2.0];
UIColor *reddish = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:0.3];
[Layer setBorderColor:[reddish CGColor]];
[Layer setPosition:[[numLayers objectAtIndex:i] CGPointValue]];
[Layer setCornerRadius:[Layer bounds].size.width/2];
reddish = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:0.2];
CGColorRef cgReddish = [reddish CGColor];
[Layer setBackgroundColor:cgReddish];
[Layer setShouldRasterize:YES];
[Layer setRasterizationScale:[[perfil valueForKeyPath:@"transform.scale"] floatValue]];
[perfil addSublayer:Layer];
[Layer release];
}
任何提示將非常感激。謝謝。