ios - 如何使用像素化更正 UIView 和 UILabel 文本缩放?

标签 ios swift optimization uiview catextlayer

当我将带有文本的 UILabel 添加到 UIView,然后缩放 UIView 时,内容显示为像素化。比例因子越大,像素化越大。

我知道使用 CATextLayer 可能会有所帮助,并且可以显示缩放后的 UIViewUILabel 文本,但我不会知道如何实现它。

这就是我如何创建一个三角形并在没有像素化的情况下对其进行缩放。它具有完美的锋利边缘。

在缩放 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)
}

图片:

enter image description here

最佳答案

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/

相关文章:

sql - 帮助优化简单的 MySQL 查询

ios - 在 iOS 坐标系中,给定的位置是以像素为单位还是以其他特定单位为单位?

ios - UITableViewCell Storyboard 注册依赖于初始 View Controller ?

ios - Alamofire POST 方法不会将值传递给 url

javascript - JS 开关语句 : Does most-likely-case optimisation matter?

c - 将字符串转换为整数的最小方法(反之亦然)

ios - Swift 动态库的 WatchKit 问题

ios - 运行时错误 -- 线程 1 : Signal SIGABRT -- No Console Output

ios - Objective-C 何时调用 cellForRowAtIndexPath?

swift - 添加约束困惑 View