2011-10-19 10 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私はあなたのメールIDにコードを送ってきました – Anand

答えて

1

問題は、あなたが変換を使ってスケーリングしているということです。それは元のレンダリングを受け取り、それを上下させますが、それを変更しません。言い換えれば、「品質」は、あなたがそれを表示しているサイズでのみ変化します。その代わりに、次の手順を実行することをお勧めします。

  • 変換をアイデンティティに戻します(次の手順でこれを行う必要があります)。
  • 新しいフレームサイズ、再配置ビューを計算して適用します。
  • 回転変換を適用します。
  • フレームサイズを変更すると、新しいサイズでビューが再度描画され、小さいサイズのビューを拡大するよりも品質が向上します。

    ピンチでフレームを変更することが可能かどうかはわかりません(これは認識装置が壊れている可能性があります)。おそらく、現在行っている変換を適用し、change-frame-size-methodピンチが終了した後に高品質のバージョンを取得するためにジェスチャが実行されたとき(スクロールビューでも同様のパターンが表示されることがあります)。

    +0

    フレームサイズを変更してもスムーズなエッジが得られますが、UILabelのフレームを変更した後はピンチを検出できません。 – Anand

    +0

    この場合、ピンチで変換を使用してスケールしなければならず、ピンチが完了したらフレームサイズを使用してスケールします。だからピンチングは少し醜いように見えるかもしれませんが、ユーザーが指を持ち上げると、それは良く見えます。 – DarkDust

    +0

    私はそれを試していただきありがとうございます。 – Anand

    関連する問題