我正在制作一个流程图应用程序,在缩放包含文本的形状时遇到了问题。
取决于比例值,字符串的相对宽度会发生变化:
等级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等)之间的关系之间没有关联。
如何缩放文本,以使其宽度与框架的宽度之间的关系保持恒定?
答案 0 :(得分:0)
此功能可提高可读性。大小和填充等文本度量标准没有简单的线性关系。它们以各种方式进行了各种调整,以各种大小进行调整,并以特定于字体的方式进行调整,以使文本易于阅读。
如果要线性缩放文本,则应渲染文本,然后缩放绘制图层。对于您的用例,最好的方法可能是用CAShapeLayers组成一个静态CATextLayer,然后应用CAAffineTransform整个容器CALayer来调整其大小。这样可以使缩放平滑,并且性能更高。