2016-04-28 7 views
2

私はUILabelを持っています。 UIPinchGestureRecognizerを使用して拡大すると、テキストがぼやけて表示されます。私は私のコードにそれを修正する方法UILabelはUIPinchGestureRecognizerを使用してテキストをぼかしました

self.myLabel.transform = CGAffineTransformScale(self.myLabel.transform, pinchRecognizer.scale, pinchRecognizer.scale);

CGAffineTransformScaleを使用 before

after

+0

トランスフォームを行い、ラベルを拡大/縮小します。品質を損なわずにサイズを大きくしたい場合は、制約を使ってアニメーション化する必要があります。 –

+0

あなたのコメントをありがとう、あなたが気にしないなら、小さな例を与えることができますか?私はIOSプログラミングのノブです。ありがとうございます –

+0

文法が改善されました。 「ラベル」のスペルミスを修正しました。スケールアップする代わりに – Prune

答えて

0

この問題を解決する方法を見つけたので、とても簡単でした。

所与のスケール:

CGFloat scale = self.myLable.transform.a *pinchRecognizer.scale *[UIScreen mainScreen].scale; 

この - (self.myLable.transform.a)は現在のスケール係数を返します。

self.myLable.transform = CGAffineTransformScale(self.myLable.transform, pinchRecognizer.scale, pinchRecognizer.scale); 
[self.myLable setContentScaleFactor:scale]; 

完了、 ハッピーコーディング!

1

多くの試行後に失敗しました。私は解決策を見つけた。

@IBAction func handlePinch(recognizer : UIPinchGestureRecognizer) { 
    var pinchScale = recognizer.scale 
    signatureLabel.layer.contentsScale = UIScreen.main.scale + pinchScale; 
    signatureLabel.transform = signatureLabel.transform.scaledBy(x: pinchScale, y:pinchScale) 
    pinchScale = round(pinchScale * 1000)/1000.0 

    if recognizer.state == .changed { 
     signatureLabel.font = UIFont(name: signatureLabel.font.fontName, size: signatureLabel.font.pointSize * pinchScale) 
     pinchScale = recognizer.scale 
    } 
    recognizer.scale = 1 
} 

ただし、UILabelの制約を更新しないと正しく動作しません。ストーリーボードでは、私は自分のラベルにVertical &横の中心の拘束を加えました。その後、私のクラスにアウトレットを作成しました。そして私のhandlePanメソッドでは、私はやった:

@IBAction func handlePan(recognizer:UIPanGestureRecognizer) { 
    let translation = recognizer.translation(in: recognizer.view) 
    self.signatureLabel.center = CGPoint(x:self.signatureLabel.center.x + translation.x, 
             y:self.signatureLabel.center.y + translation.y) 
    signatureLabelCenterConstraint.constant = signatureLabelCenterConstraint.constant + translation.y 
    signatureLabelCenterXConstraint.constant = signatureLabelCenterXConstraint.constant + translation.x 
    signatureLabel.setNeedsLayout() 
    recognizer.setTranslation(.zero, in: recognizer.view) 
} 

私は助けて欲しい!

関連する問題