我有一個UILabel;當我使用UIPinchGestureRecognizer進行放大時,文字變得模糊。 UILabel使用UIPinchGestureRecognizer模糊文本
我用CGAffineTransformScale我的代碼
self.myLabel.transform = CGAffineTransformScale(self.myLabel.transform, pinchRecognizer.scale, pinchRecognizer.scale);
如何解決呢?
我有一個UILabel;當我使用UIPinchGestureRecognizer進行放大時,文字變得模糊。 UILabel使用UIPinchGestureRecognizer模糊文本
我用CGAffineTransformScale我的代碼
self.myLabel.transform = CGAffineTransformScale(self.myLabel.transform, pinchRecognizer.scale, pinchRecognizer.scale);
如何解決呢?
我發現如何解決這個問題,這很容易。
給予規模:
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];
完成, 快樂編碼!
經過很多嘗試和失敗。我找到了解決方案。
@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的約束條件,它不能正常工作。所以,在故事板中,我添加了垂直水平中心約束到我的標籤。然後,創建了我的課堂。並在我的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編程的noob。非常感謝您 –
改進的語法;糾正了「標籤」的拼寫錯誤。 – Prune