如何根据 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 为 UITableView
和 UICollectionView
推出了一项名为 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,如何在不更改标签框架的情况下根据内容调整字体大小?
根据自动布局更改 UILabel 中的字体大小(swift)