当我将带有文本的 UILabel
添加到 UIView
,然后缩放 UIView
时,内容显示为像素化。比例因子越大,像素化越大。
我知道使用 CATextLayer
可能会有所帮助,并且可以显示缩放后的 UIView
和 UILabel
文本,但我不会知道如何实现它。
这就是我如何创建一个三角形并在没有像素化的情况下对其进行缩放。它具有完美的锋利边缘。
在缩放 UILabel
时如何确保相同?
func drawTriangle() {
let path = UIBezierPath()
path.moveToPoint(CGPoint(x: 0, y: 100))
path.addLineToPoint(CGPoint(x: 100, y: 100))
path.addLineToPoint(CGPoint(x: 50, y: 0))
path.closePath()
let shape = CAShapeLayer()
shape.path = path.CGPath
shape.fillColor = UIColor.blackColor().CGColor
viewTriangle.layer.insertSublayer(shape, atIndex: 0)
}
func scaleTriangle() {
viewTriangle.transform = CGAffineTransformMakeScale(5, 5)
}
问题:
在 Swift 代码中,我如何将下面的代码转换为使用 CATextLayer
,以便它在没有像素化的情况下缩放?
问题代码:
func drawLetter() { // pixelated when scaled ?
let labelLetter = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
labelLetter.text = "A"
labelLetter.backgroundColor = UIColor.clearColor()
labelLetter.textColor = UIColor.blackColor()
labelLetter.font = UIFont(name: labelLetter.font.fontName, size: 144)
labelLetter.textAlignment = .Center
viewLetter.addSubview(labelLetter)
}
}
func scaleView() {
let scaleValue: CGFloat = 5
self.viewLetter.transform = CGAffineTransformMakeScale(scaleValue, scaleValue)
}
图片:
最佳答案
I understand using a CATextLayer uses paths for drawing and will display the scaled UIView and UILabel text without pixelation.
你理解错了。 CATextLayer 绘制 文本并缩放它的 文本。这是一个非此即彼的事情:使用 CATextLayer 或 UILabel。
在缩放 View 中很容易获得更多细节:这就是 View 的 contentScaleFactor
是为了。只需增加它,同时考虑由于屏幕分辨率而导致的现有比例,以匹配您的比例转换。
关于ios - 如何使用像素化更正 UIView 和 UILabel 文本缩放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46657772/