iphone - 使用手势缩放 UIlabel 文本

标签 iphone ipad uilabel gesture

我正在使用 UIPinchGestureRecognizer 缩放 UILabel 文本。但我无法实现文本的平滑边缘或平滑度。

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

最佳答案

问题在于您正在使用转换进行缩放。这会采用原始​​渲染并将其放大或缩小,但不会改变它。换句话说:“质量”不会改变,只会改变显示的尺寸。您想要的可能是执行以下步骤:

  • 将转换重置回身份(下一步需要执行此操作)。
  • 计算并应用新的帧尺寸,重新定位 View 。
  • 应用旋转变换。

通过更改帧大小,将使用新的大小再次绘制 View ,这将比放大较小的 View 获得更好的质量。

我不确定在捏合过程中是否可以更改框架(这可能会干扰识别器),也许您需要应用现在正在执行的转换,并在执行更改框架大小方法时完成手势是为了在捏合完成后获得高质量版本(有时您可以在 ScrollView 中看到类似的图案)。

关于iphone - 使用手势缩放 UIlabel 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7817133/

相关文章:

iphone - 异步加载 JSON 并显示 Activity Indicator View

ios - 在 iPad 应用程序中显示条款和条件

ios - UILabel numberOfLines 随动画变化

iphone - 如何在 iPhone 应用程序中显示图形

ios - 在 SpriteKit 中将节点定位在屏幕的顶部中间

iphone - iPhone 版照片库

objective-c - CorePlot 图上的点

ios - UILabel 找到适合宽度的高度

ios - uilabel 文本仅在需要时换行

iphone - 语音到 iPhone 的文本 API?