Xcode 如何根据系统字体大小更改标签的字体大小?
How do I make a label's font size change based on the system font size in Xcode?
我在 table 视图中的原型单元格上有一个标签。我有一些随机文本,我希望根据系统字体的大小看到这些文本的变化。现在,如果我更改系统字体大小,此标签将保持相同大小。
这主要是为了 iOS 8。如果这与 iOS 7 一起使用,那就更好了。
如果我明白你的意思,你可以使用这样的东西。
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
}
在 WWDC 2014 中,Apple 为 UITableView
和 UICollectionView
推出了一项名为“自调整单元格大小”的新功能。您可以将此添加到您的 -(void)viewDidLoad
:
tableView.estimatedRowHeight = 44.0; //Or anything else
tableView.rowHeight = UITableViewAutomaticDimension;
有用的文章:Understanding Self Sizing Cells and Dynamic Type in iOS 8
此致,
在iOS7及以后的版本中,可以使用动态类型:
cell.textLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
请参阅 WWDC 2014 视频,What's New in Table and Collection Views 了解如何执行此操作的说明。
问题是如何改变单元格高度。在 iOS 8 中,默认的 table 视图单元格将自动更改大小。如果您使用自己的带有自定义布局的原型单元格,如果您使用自动布局并且对内容视图有完全定义的约束,那么 table 视图高度将自动为您更改。
不确定您是否使用指定的字体。如果是这样,这是我使用的方法:
+ (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
我在 table 视图中的原型单元格上有一个标签。我有一些随机文本,我希望根据系统字体的大小看到这些文本的变化。现在,如果我更改系统字体大小,此标签将保持相同大小。
这主要是为了 iOS 8。如果这与 iOS 7 一起使用,那就更好了。
如果我明白你的意思,你可以使用这样的东西。
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
}
在 WWDC 2014 中,Apple 为 UITableView
和 UICollectionView
推出了一项名为“自调整单元格大小”的新功能。您可以将此添加到您的 -(void)viewDidLoad
:
tableView.estimatedRowHeight = 44.0; //Or anything else
tableView.rowHeight = UITableViewAutomaticDimension;
有用的文章:Understanding Self Sizing Cells and Dynamic Type in iOS 8
此致,
在iOS7及以后的版本中,可以使用动态类型:
cell.textLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
请参阅 WWDC 2014 视频,What's New in Table and Collection Views 了解如何执行此操作的说明。
问题是如何改变单元格高度。在 iOS 8 中,默认的 table 视图单元格将自动更改大小。如果您使用自己的带有自定义布局的原型单元格,如果您使用自动布局并且对内容视图有完全定义的约束,那么 table 视图高度将自动为您更改。
不确定您是否使用指定的字体。如果是这样,这是我使用的方法:
+ (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