限制支持的动态类型字体大小

奥特温·根茨(Ortwin Gentz)

我想支持动态类型,但仅支持某个限制,类似于Settings.app,其中标准UITableViewCells可以增长到UIContentSizeCategoryAccessibilityExtraExtraLarge但不能更大。

有没有一种简单的方法可以使用标准的UITableViewCell样式完成此操作?

约翰·斯蒂芬

我在UIFont上使用自定义类别以获取具有限制的首选字体,像这样

@implementation UIFont (preferredFontWithSizeLimit)

+ (UIFont *)preferredFontWithTextStyle:(UIFontTextStyle)style maxSize:(CGFloat)maxSize {
    // Get the descriptor
    UIFontDescriptor *fontDescriptor = [UIFontDescriptor preferredFontDescriptorWithTextStyle: style];

    // Return a font with the minimum size
    return [UIFont fontWithDescriptor: fontDescriptor size: MIN(fontDescriptor.pointSize, maxSize)];
}

@end

要对基于样式的限制进行硬编码,您可以添加以下内容(我在注释中将每种样式的当前系统默认值)

+ (UIFont *)limitedPreferredFontForTextStyle:(UIFontTextStyle)style {
    // Create a table of size limits once
    static NSDictionary *sizeLimitByStyle;
    static dispatch_once_t once_token;
    dispatch_once(&once_token, ^{
        sizeLimitByStyle = @{
            UIFontTextStyleTitle1: @56, // default 28
            UIFontTextStyleTitle2: @44, // default 22
            UIFontTextStyleTitle3: @40, // default 20
            UIFontTextStyleHeadline: @34, // default 17
            UIFontTextStyleSubheadline: @30, // default 15
            UIFontTextStyleBody: @34, // default 17
            UIFontTextStyleCallout: @32, // default 16
            UIFontTextStyleFootnote: @26, // default 13
            UIFontTextStyleCaption1: @24, // default 12
            UIFontTextStyleCaption2: @22, // default 11
        };
    });
    
    // Look up the size limit
    CGFloat maxSize = INFINITY;
    NSNumber *limit = sizeLimitByStyle[style];
    if (limit) {
        maxSize = limit.doubleValue;
    }
    // Return the font
    return [UIFont preferredFontWithTextStyle: style maxSize: maxSize];
}

迅捷4+

extension UIFont {

  static func preferredFont(withTextStyle textStyle: UIFont.TextStyle, maxSize: CGFloat) -> UIFont {
    // Get the descriptor
    let fontDescriptor = UIFontDescriptor.preferredFontDescriptor(withTextStyle: textStyle)

    // Return a font with the minimum size
    return UIFont(descriptor: fontDescriptor, size: min(fontDescriptor.pointSize, maxSize))
  }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

动态更改字体大小

来自分类Dev

PHP Regex用于字体大小限制

来自分类Dev

CSS-动态字体大小

来自分类Dev

动态更改gvim中的字体大小?

来自分类Dev

div中的动态字体大小

来自分类Dev

如何在iOS模拟器中测试动态类型(较大的字体大小)

来自分类Dev

如何在iOS模拟器中测试动态类型(较大的字体大小)

来自分类Dev

动态更改字体系列和字体大小

来自分类Dev

python-docx中的字体类型和字体大小

来自分类Dev

使用System.Drawing.Font限制字体大小?

来自分类Dev

使用System.Drawing.Font限制字体大小?

来自分类Dev

限制可以增加和减少字体大小的次数

来自分类Dev

我想限制用户增加/减少字体大小

来自分类Dev

如何支持Xamarin表单中的辅助功能字体大小?

来自分类Dev

动态更改特定段落<p>元素上的字体大小?

来自分类Dev

如何从iOS设置中检测动态字体大小的变化?

来自分类Dev

Python / Tkinter:动态扩展字体大小以填充框架

来自分类Dev

在JavaFX中动态调整CSS字体大小规则

来自分类Dev

UILabel 动态改变字体大小并保持位置?

来自分类Dev

Libgdx 字体大小

来自分类Dev

随着键入更多类型,使 HTML 输入字体大小缩小

来自分类Dev

找到相对字体大小的绝对字体大小

来自分类Dev

为什么em字体大小不会随字体类型改变?

来自分类Dev

R Markdown-在html输出中更改字体大小和字体类型

来自分类Dev

使用不同的字体类型时,如何计算字体大小?

来自分类Dev

使用gd调整字体大小和填充大小以创建动态条形图

来自分类Dev

用户选择大小后,应用程序中的字体大小会动态更改(Xamarin)

来自分类Dev

使用C#在datagridview中调整行标题的大小时,如何动态更改字体大小?

来自分类Dev

NSMutableAttributedString设置字体大小

Related 相关文章

  1. 1

    动态更改字体大小

  2. 2

    PHP Regex用于字体大小限制

  3. 3

    CSS-动态字体大小

  4. 4

    动态更改gvim中的字体大小?

  5. 5

    div中的动态字体大小

  6. 6

    如何在iOS模拟器中测试动态类型(较大的字体大小)

  7. 7

    如何在iOS模拟器中测试动态类型(较大的字体大小)

  8. 8

    动态更改字体系列和字体大小

  9. 9

    python-docx中的字体类型和字体大小

  10. 10

    使用System.Drawing.Font限制字体大小?

  11. 11

    使用System.Drawing.Font限制字体大小?

  12. 12

    限制可以增加和减少字体大小的次数

  13. 13

    我想限制用户增加/减少字体大小

  14. 14

    如何支持Xamarin表单中的辅助功能字体大小?

  15. 15

    动态更改特定段落<p>元素上的字体大小?

  16. 16

    如何从iOS设置中检测动态字体大小的变化?

  17. 17

    Python / Tkinter:动态扩展字体大小以填充框架

  18. 18

    在JavaFX中动态调整CSS字体大小规则

  19. 19

    UILabel 动态改变字体大小并保持位置?

  20. 20

    Libgdx 字体大小

  21. 21

    随着键入更多类型,使 HTML 输入字体大小缩小

  22. 22

    找到相对字体大小的绝对字体大小

  23. 23

    为什么em字体大小不会随字体类型改变?

  24. 24

    R Markdown-在html输出中更改字体大小和字体类型

  25. 25

    使用不同的字体类型时,如何计算字体大小?

  26. 26

    使用gd调整字体大小和填充大小以创建动态条形图

  27. 27

    用户选择大小后,应用程序中的字体大小会动态更改(Xamarin)

  28. 28

    使用C#在datagridview中调整行标题的大小时,如何动态更改字体大小?

  29. 29

    NSMutableAttributedString设置字体大小

热门标签

归档