【问题标题】:Text isn't scaling properly in frame文本在框架中未正确缩放
【发布时间】:2019-12-17 22:53:33
【问题描述】:

我正在制作一个 流程图 应用程序,但在缩放包含文本的形状时遇到了问题。

根据比例值,字符串的相对宽度会发生变化:

比例 6.0:scale 6.0 规模 1.0: scale 1.0 比例 0.5: scale 0.5

文本区域类具有属性logFontSize,它表示恒定的字体大小(本例中为12.0)。

缩放功能(zoomVal是新的缩放):

func zoom(zoomVal: CGFloat){
    let newSize = self.logFontSize*zoomVal
    self.attributes![NSAttributedString.Key.font] = (self.attributes![NSAttributedString.Key.font] as! UIFont).withSize(newSize)
    self.attributedString?.setAttributes(self.attributes, range: NSRange(location: 0, length: self.text!.count))
}

我还检查过:比例值与框架矩形(红色)高度和字符串高度(capHeight、lineHeight 等)之间的关系没有相关性。

如何缩放文本以使其宽度与其框架宽度之间的关系保持不变?

【问题讨论】:

    标签: ios swift text core-graphics


    【解决方案1】:

    这是一项提高易读性的功能。大小和填充等文本指标没有简单的线性关系。它们以各种大小和特定字体的方式进行了多种调整,以使文本易于阅读。

    如果你想线性缩放文本,你​​应该渲染它,然后缩放它被绘制的层。对于你的用例,最好的方法可能是用 CAShapeLayers 组合静态 CATextLayer,然后应用 CAAffineTransform到整个容器 CALayer 来调整它的大小。这将为您提供平滑的缩放,并且性能更高。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-30
      • 1970-01-01
      • 2022-10-23
      • 2016-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-14
      相关资源
      最近更新 更多