Iphone 放大时,普通CALayer会变得模糊

Iphone 放大时,普通CALayer会变得模糊,iphone,image-processing,zooming,calayer,blurry,Iphone,Image Processing,Zooming,Calayer,Blurry,我有一个问题,我的CALayers的决议,看起来模糊放大后。我知道有很多关于它的帖子,但是在读了很多之后,我还没有找到一个解决方案,我对此感到困惑 情况: 该应用程序具有带UIView的UIViewController。在此UIView下有一个CALayer,其形状由CGPath定义,添加为[[self layer]addSublayer:myCALayer]。如果用户点击按钮,则会有一定数量的其他CALayer作为子层添加到主CALayer myLayer->[myLayer addSubla

我有一个问题,我的CALayers的决议,看起来模糊放大后。我知道有很多关于它的帖子,但是在读了很多之后,我还没有找到一个解决方案,我对此感到困惑

情况: 该应用程序具有带UIView的UIViewController。在此UIView下有一个CALayer,其形状由CGPath定义,添加为[[self layer]addSublayer:myCALayer]。如果用户点击按钮,则会有一定数量的其他CALayer作为子层添加到主CALayer myLayer->[myLayer addSublayer:Layer]。我的案例与网上的帖子不同之处在于,我没有UIImages、UIImageViews等,只有带有特定背景颜色的普通和基本的Calayer。没有UIScrollView,只有UIgestureRecognitors点击、双击、捏和平移。所有这些东西都很好用

问题: 当我放大时,炉墙变得模糊

以下是问题的图像:

这是我的代码:

这是在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];
}

任何暗示都将不胜感激。谢谢。

在优化我的代码之后,我所做的改进之一就是将perfil CALayer更改为CAShapelayer。我想我在使用CALayer时出了点问题,但现在效果非常好