如何根据 Xcode 中的系统字体大小更改标签的字体大小?

Posted

技术标签:

【中文标题】如何根据 Xcode 中的系统字体大小更改标签的字体大小?【英文标题】:How do I make a label's font size change based on the system font size in Xcode? 【发布时间】:2015-01-14 15:56:23 【问题描述】:

我在表格视图的原型单元格上有一个标签。我有一些随机文本,我希望看到基于系统字体大小的变化。现在,如果我改变系统字体大小,这个标签保持不变。

这主要适用于 ios 8。如果这适用于 iOS 7,那就更好了。

【问题讨论】:

这是针对 iOS 8 的。问题已更新。 我不知道为什么这个问题被否决了。这对我来说似乎是合法的。 唯一真正的解决方案是:***.com/a/35154493/294884 【参考方案1】:

在 iOS 7 及更高版本中,您可以使用动态类型:

cell.textLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];

请参阅 WWDC 2014 视频,What's New in Table and Collection Views,了解如何执行此操作。

问题是如何更改单元格高度。在 iOS 8 中,默认的 tableview 单元格会自动改变大小。如果您使用自己的原型单元格和自定义布局,如果您使用自动布局并且对内容视图具有完全定义的约束,那么表格视图高度将为您自动更改。

【讨论】:

【参考方案2】:

如果我明白你的意思,你可以使用这样的东西。

if UIScreen.mainScreen().bounds.size.height == 480 
    // iPhone 4

label.font = label.font.fontWithSize(20)     
 else if UIScreen.mainScreen().bounds.size.height == 568 
    // IPhone 5

label.font = label.font.fontWithSize(20)
 else if UIScreen.mainScreen().bounds.size.width == 375 
    // iPhone 6

label.font = label.font.fontWithSize(20)
 else if UIScreen.mainScreen().bounds.size.width == 414 
    // iPhone 6+

label.font = label.font.fontWithSize(20)
 else if UIScreen.mainScreen().bounds.size.width == 768 
    // iPad

【讨论】:

我认为其目的是将字体大小与设置相关联,而不是与屏幕大小相关联。【参考方案3】:

在 WWDC 2014 中,Apple 为 UITableViewUICollectionView 推出了一项名为 Self Sizing Cells 的新功能。您可以将此添加到您的-(void)viewDidLoad

tableView.estimatedRowHeight = 44.0; //Or anything else
tableView.rowHeight = UITableViewAutomaticDimension;

有用的文章:Understanding Self Sizing Cells and Dynamic Type in iOS 8

最好的问候,

【讨论】:

【参考方案4】:

不确定您是否使用了指定的字体。如果是这样,这是我使用的方法:

+ (int) preferredFontSize : (float) fontSize

    NSString *category = [[UIApplication sharedApplication] preferredContentSizeCategory];

    if ([category isEqualToString:UIContentSizeCategoryExtraExtraExtraLarge])
    
        return fontSize / 0.7;
    
    else
    
        if ([category isEqualToString:UIContentSizeCategoryExtraExtraLarge])
        
            return fontSize / 0.8;
        
        else
        
            if ([category isEqualToString:UIContentSizeCategoryExtraLarge])
            
                return fontSize / 0.9;
            
            else
            
                if ([category isEqualToString:UIContentSizeCategoryMedium])
                
                    return fontSize * 0.9;
                
                else
                
                    if ([category isEqualToString:UIContentSizeCategorySmall])
                    
                        return fontSize * 0.8;
                    
                    else
                    
                        if ([category isEqualToString:UIContentSizeCategoryExtraSmall])
                        
                            return fontSize * 0.7;
                        
                        else
                        
                            return fontSize;
                        
                    
                
            
        
    


@end

【讨论】:

以上是关于如何根据 Xcode 中的系统字体大小更改标签的字体大小?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 xcode 7 中为 xcode 8 中的标签添加更多字体大小,它在字体旁边显示“+”符号

具有自动布局的多行UILabel,如何在不更改标签框架的情况下根据内容调整字体大小?

Xamarin.iOS - 如何动态更改标签字体大小?

根据自动布局更改 UILabel 中的字体大小(swift)

如何使用R中的绘图功能更改散点图中x轴和y轴标签的字体大小和颜色?

在 iOS 中根据大小和其他属性全局更改字体类型