2011-10-19 76 views
2

我使用UIPinchGestureRecognizer缩放UILabel文本。但是我无法实现文本的平滑边缘或平滑度。缩放使用手势缩放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

+0

可以请你发布你的代码你是如何实现的,因为我陷入了同样的问题? –

+0

@Jennis发给我你的邮件编号 – Anand

+0

@Jennis我已将代码发送到你的邮件编号 – Anand

回答

1

的问题是,您使用的是改造缩放。这需要原始渲染并将其向上或向下缩放,但不会改变它。换句话说:“质量”不会改变,只有在您显示的尺寸上。你想要的可能是做下面的步骤:

  • 重置转换回身份(需要为下一步做)。
  • 计算并应用新的帧大小,重新定位视图。
  • 应用旋转变换。

通过改变框架大小再次绘制视图与新的大小,这将导致更好的质量比扩大一个较小的视图。

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

+0

你是正确的改变框架的大小,我们可以实现平滑的边缘,但我们无法检测UILabel的帧改变后捏。 – Anand

+0

在这种情况下,您将不得不在缩放时使用变换进行缩放,并且一旦完成缩放,就可以使用帧大小进行缩放。所以虽然捏它可能看起来有点丑,但一旦用户举起他的手指,它会看起来不错。 – DarkDust

+0

谢谢我会试试看。 – Anand