Изменение размера UILabel с использованием UIPinchGestureRecognizer перестал работать - PullRequest
0 голосов
/ 20 мая 2018

Этот код используется для работы и вызывает квадрат UILabel, который имеет границу с радиусом угла, равным половине длины стороны (т. Е. Выглядит как круг), для изменения размера при сжатии:

- (void)resizeTargetRegistrationShape:(UIPinchGestureRecognizer *)sender
{
    if ( [sender state] == UIGestureRecognizerStateBegan || [sender state] == UIGestureRecognizerStateChanged )
    {
        [[sender view] transform] = CGAffineTransformScale([[sender view] transform], [sender scale], [sender scale]);
        [sender setScale:1.0];
    }
}

Селектор вызывается с правильным UIPinchGestureRecognizer, вид - правильная метка, и значение масштаба является разумным.Я пытался поместить transform в основной поток, но без разницы.Эквивалентный жест для перемещения его в представлении продолжал работать.Я также попытался добавить setNeedsDisplay и setNeedsLayout, просто чтобы показать, насколько я в отчаянии!

1 Ответ

0 голосов
/ 21 мая 2018

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

[[sender view] transform] = 
    CGAffineTransformScale(
        [[sender view] transform], [sender scale], [sender scale]);


Что вы имеете в виду:

[[sender view] setTransform: 
    CGAffineTransformScale(
        [[sender view] transform], [sender scale], [sender scale])];
...