ios:水平缩放字体而不光栅化

标签 ios fonts scale

Android 提供了一个属性 textScaleX,允许水平缩放文本,同时保留字体高度。我在 Android 应用程序中广泛使用它(特别是对于不像英语那么紧凑的语言),并希望在 ios 中找到类似的东西。

显然,我可以将文本绘制到图形上下文并将其缩放为图像,但这似乎是一个相当尴尬的解决方案,它将所有文本项都转换为 ImageView-s。

有没有一种原生方式来水平缩放文本?例如,可能有一个选项可以基于系统字体创建自定义字体并更改负责文本宽度的参数。

最佳答案

使用 UIFontDescriptormatrix 属性。

下面是一个示例,它采用 self.label 中的 UILabel 并将其字体设置为水平拉伸(stretch) 1.3 倍。

UIFont* baseFont = self.label.font;
UIFontDescriptor *baseDescriptor = baseFont.fontDescriptor;
UIFontDescriptor *newDescriptor = [baseDescriptor fontDescriptorWithMatrix:
    CGAffineTransformMakeScale(1.3, 1.0)];
UIFont* newFont = [UIFont fontWithDescriptor:newDescriptor size:0.0];
self.label.font = newFont;

关于ios:水平缩放字体而不光栅化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30960189/

相关文章:

ios - 无法让 UILabel 显示超过 3 行

ios - 播放完音频后不调用 AVPlayerItemDidPlayToEndTimeNotification

ios NSMutableAttributedString NSKernAttributeName 错误的字距与 "fl"和 "fi"字母

python - 如何在 matplotlib 中将 y 轴设置为千位

安卓,WebView.getWidth() == window.innerWidth

ios - 当列数更改时 UICollectionView 崩溃

objective-c - Core Data 是否在 SQLite 文件之外存储任何状态相关信息

fonts - 使用 wkhtmltopdf 时 PDF 中显示的字体错误

android - 使用书法库的某些 Activity 的不同字体

ios - 如何根据设备大小和比例调整 UIImage 的大小?