多くの試行後に失敗しました。私は解決策を見つけた。
@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)
}
私は助けて欲しい!
トランスフォームを行い、ラベルを拡大/縮小します。品質を損なわずにサイズを大きくしたい場合は、制約を使ってアニメーション化する必要があります。 –
あなたのコメントをありがとう、あなたが気にしないなら、小さな例を与えることができますか?私はIOSプログラミングのノブです。ありがとうございます –
文法が改善されました。 「ラベル」のスペルミスを修正しました。スケールアップする代わりに – Prune