ズームインすると CALayers の解像度がぼやけて見えるという問題があります。それに関する投稿がたくさんあることは知っていますが、それらをたくさん読んだ後、まだ解決策を見つけることができず、混乱しています。 .
状況: アプリには、UIView を持つ UIViewController があります。この UIView の下には、[[self layer] addSublayer:myCALayer] として追加された形状を定義する CGPath を持つ CALayer があります。ユーザーがボタンをタップすると、特定の数の他の CALayer がサブレイヤーとしてメインの CALayer に追加されます (myLayer -> [myLayer addSublayer:Layer])。私のケースと Web で見つかった投稿との違いは、UIImages、UIImageViews などを持っておらず、特定の backgroundColor を持つ単純で基本的な CALayers しか持っていないことです。UIScrollViews はなく、UIGestureRecognizers (タップ、ダブルタップ、ピンチ、パン) のみです。これらはすべてうまく機能します。
問題: 拡大すると、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];
}
どんなヒントでも大歓迎です。ありがとうございました。