我在表格视图中的原型单元格上有一个标签。我在那里有一些随机文本,我希望看到基于系统字体大小的变化。现在,如果我更改系统字体大小,此标签将保持相同的大小。
这主要适用于iOS 8.如果适用于iOS 7,它会更好。
答案 0 :(得分:1)
在iOS 7及更高版本中,您可以使用动态类型:
cell.textLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
请参阅WWDC 2014视频,What's New in Table and Collection Views,了解如何执行此操作。
问题是如何改变细胞高度。在iOS 8中,默认的tableview单元格将自动更改大小。如果您使用自己的原型单元格和自定义布局,如果您使用自动布局并且对内容视图具有完全定义的约束,那么表格视图高度将自动为您更改。
答案 1 :(得分:0)
如果我明白你的意思,你可以使用这样的东西。
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
}
答案 2 :(得分:0)
在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
致以最诚挚的问候,
答案 3 :(得分:0)
不确定您是否使用指定的字体。如果是,请按照以下方法使用:
+ (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