4

尺寸不适用。

如果我希望字体更大或更小怎么办?

我应该怎么办?

在此处输入图像描述

我认为这取决于 UILabel 的大小。但是,调整 UILabel 的大小将不起作用。

4

4 回答 4

5

iOS 7 使用了一种叫做动态类型的东西。无需指定确切的字体及其大小和所有内容,您可以通过语义来描述它,例如,该字体用于标题、正文或您想要的任何内容。实际字体取决于可以动态更改的各种参数,其中之一是用户在“首选项/常规/文本大小”中选择的首选字体大小。你不能只选择标题的大小,因为那会使整个概念变得毫无意义。这不是您的选择,而是用户的选择。您只需要倾听用户的选择并做出相应的回应。但是,您可以通过编程方式缩放首选字体。UIFontDescriptor对象用于获取当前标题大小,之后fontWithDescriptor:size:方法用于获取具有相同描述符但新缩放大小的新字体。

@interface SomeViewController ()

@property (weak, nonatomic) IBOutlet UILabel *headlineLabel;

@end

@implementation SomeViewController

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    // We need to setup our fonts whenever controller appears.
    // to account for changes that happened while
    // controller wasn't on screen.
    [self setupFonts];

    // Subscribing to UIContentSizeCategoryDidChangeNotification
    // to get notified when user chages the preferred size.
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(preferredFontChanged:)
                                                 name:UIContentSizeCategoryDidChangeNotification
                                               object:nil];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillAppear:animated];

    // Unsubscribe from UIContentSizeCategoryDidChangeNotification.
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:UIContentSizeCategoryDidChangeNotification
                                                  object:nil];
}

- (void)setupFonts
{
    // In this method we setup fonts for all the labels and text views
    // by calling 'preferredFontForTextStyle:scale:'.
    self.headlineLabel.font = [self preferredFontForTextStyle:UIFontTextStyleHeadline scale:0.8];
}

- (UIFont *)preferredFontForTextStyle:(NSString *)style scale:(CGFloat)scale
{
    // We first get prefered font descriptor for provided style.
    UIFontDescriptor *currentDescriptor = [UIFontDescriptor preferredFontDescriptorWithTextStyle:style];

    // Then we get the default size from the descriptor.
    // This size can change between iOS releases.
    // and should never be hard-codded.
    CGFloat headlineSize = [currentDescriptor pointSize];

    // We are calculating new size using the provided scale.
    CGFloat scaledHeadlineSize = lrint(headlineSize * scale);

    // This method will return a font which matches the given descriptor
    // (keeping all the attributes like 'bold' etc. from currentDescriptor),
    // but it will use provided size if it's greater than 0.0.
    return [UIFont fontWithDescriptor:currentDescriptor size:scaledHeadlineSize];
}

- (void)preferredFontChanged:(NSNotification *)notification
{
    [self setupFonts];
}

@end
于 2013-11-16T16:06:36.087 回答
2

希望你需要这个,

label.font = [UIFont fontWithName:@"HelveticaNeue-Light"  size:20 ];
             OR     
label.font = [UIFont systemFontOfSize:20];

所有ios 系统字体都在这里。

于 2013-11-15T04:41:58.507 回答
0

不确定“尺寸不适用”是什么意思。

您可以在 .xib 中更改 UILabel 的字体大小。打开它,然后在右侧的实用程序面板中打开属性选项卡。你会在那里看到你的字体设置,你也可以改变大小。

如果您想以编程方式执行此操作,则命令是:

float fontSize = (whatever you want the size to be);
myUILabel.font = [UIFont systemFontOfSize:fontSize];
于 2013-11-15T04:33:24.327 回答
0

你需要这个:

label.font = [[UIFont preferredFontForTextStyle:UIFontTextStyleHeadline] fontWithSize:label.font.pointSize * scale];

你在哪里scale调整原始字体大小。

于 2014-01-12T12:58:14.937 回答