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

时间:2015-01-14 15:56:24

标签: ios xcode interface-builder

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

这主要适用于iOS 8.如果适用于iOS 7,它会更好。

4 个答案:

答案 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为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

致以最诚挚的问候,

答案 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