使用 UIPinchGestureRecognizer 调整 UILabel 的大小已停止工作

Resizing UILabel using UIPinchGestureRecognizer has stopped working

此代码曾经有效并导致正方形 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 放在主线程上,但没有区别。在视图中四处移动它的等效手势继续起作用。我也试过把 setNeedsDisplaysetNeedsLayout 也放进去,只是为了表明我有多绝望!

这一行总是错误的,令人惊讶的是它似乎一直有效(事实上,我不明白为什么它甚至在这个应用程序存在的任何阶段都被编译):

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


你的意思是:

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