use*_*509 5 optimization uiview ios catextlayer swift
当我向a添加一个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)
}
Run Code Online (Sandbox Code Playgroud)
题:
在Swift代码中,如何将下面的代码转换为使用a,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)
}
Run Code Online (Sandbox Code Playgroud)
图片:
据我了解,使用 CATextLayer 使用路径进行绘图,并将显示缩放后的 UIView 和 UILabel 文本,而不会出现像素化。
你理解错了。CATextLayer绘制文本并缩放其文本。这是一个非此即彼的事情:使用 CATextLayer或UILabel。
在缩放视图中很容易获得更多细节:这就是视图的用途contentScaleFactor。只需增加它,考虑到由于屏幕分辨率而产生的现有比例,以匹配您的比例变换。
| 归档时间: |
|
| 查看次数: |
631 次 |
| 最近记录: |