Вектор как рисунок для масштабируемого UIScrollView - PullRequest
6 голосов
/ 04 апреля 2011

У меня есть масштабируемый UIScrollView с некоторыми CATextLayer с и простыми CALayer с.Они отображаются хорошо, но проблема в том, что при увеличении они становятся размытыми.(Даже если я перерисовываю их)

Какие бы у меня были варианты, чтобы текст не был размытым при увеличении изображения?Должен ли я использовать другую вещь?включить что-нибудь в CATextLayer / CALayer?Любая идея приветствуется;)

Я использую CALayer с, потому что, как предлагается в документации, CALayer с легче, чем UIViews, и у меня их сотни.В настоящее время это работает гладко.Я пробовал с UIWebView и моя CALayer версия быстрее;)

Заранее спасибо.

1 Ответ

16 голосов
/ 03 мая 2011

iOS растеризует текст до масштабирования, поэтому он такой размытый.Вам нужно исправить только одно свойство вашего CATextLayer, contentsScale, чтобы получить более качественный рендер после масштабирования.Реализуйте этот метод UIScrollViewDelegate:

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView
                       withView:(UIView *)view
                        atScale:(float)scale
{
    [CATransaction begin];
    [CATransaction setValue:[NSNumber numberWithBool:YES] 
                     forKey:kCATransactionDisableActions];
    uglyBlurryTextLayer.contentsScale = scale;
    [CATransaction commit];
}

Это говорит слою использовать больше пикселей для визуализации текста и отключает Core Animation при внесении этого конкретного изменения.

...