Масштабирование текста UIlabel с помощью жеста - PullRequest
2 голосов
/ 19 октября 2011

Я масштабирую UILabel текст с помощью UIPinchGestureRecognizer. Но я не могу добиться гладких краев или гладкости текста.

enter image description here

код для масштабирования:

UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scale:)];
        [pinchRecognizer setDelegate:self];
        [holderView addGestureRecognizer:pinchRecognizer];


  -(void)scale:(id)sender {

        [self bringSubviewToFront:[(UIPinchGestureRecognizer*)sender view]];

        if([(UIPinchGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) {

            lastScale = 1.0;
            return;
        }


        CGFloat scale = 1.0 - (lastScale - [(UIPinchGestureRecognizer*)sender scale]);


        CGAffineTransform currentTransform = [(UIPinchGestureRecognizer*)sender view].transform;
        CGAffineTransform newTransform = CGAffineTransformScale(currentTransform, scale, scale);

        [[(UIPinchGestureRecognizer*)sender view] setTransform:newTransform];

        lastScale = [(UIPinchGestureRecognizer*)sender scale];
    }

enter image description here

1 Ответ

1 голос
/ 19 октября 2011

Проблема в том, что вы масштабируете, используя преобразование.Это берет исходный рендеринг и масштабирует его вверх или вниз, но не меняет его.Другими словами: «качество» не меняется, только в том размере, в котором вы его отображаете.Вместо этого вам, вероятно, нужно выполнить следующие шаги:

  • Сбросить преобразование обратно в идентичность (необходимо сделать это для следующего шага).
  • Рассчитать и применить новый размер кадра, переместите представление.
  • Примените преобразование поворота.

При изменении размера кадра вид снова отображается с новым размером, что приведет к лучшему качеству, чем увеличение меньшего вида.

Я не уверен, возможно ли изменение кадра во время сжатия (возможно, это мешает распознавателю), возможно, вам нужно применить преобразование, которое вы делаете прямо сейчас, и выполнить изменение размера кадра-метод, когда жест сделан, чтобы получить высококачественную версию после того, как щепотка закончена (иногда вы можете увидеть похожий шаблон с прокруткой).

...