为什么我的UILabel没有更改字体?

时间:2013-03-26 16:14:10

标签: ios xcode fonts

我在这里阅读了有关XCode中自定义字体的不同答案,但我仍然无法使其工作。

我做了什么:

将其添加到Plist。 将其添加到Copy boundle resources。

如果我这样做:

for ( NSString *familyName in [UIFont familyNames] )
    {
        NSLog(@"Family: %@", familyName);
        NSLog(@"Names = %@", [UIFont fontNamesForFamilyName:familyName]);
    }

它将打印出来:

2013-03-26 17:04:52:214 Appname[21704:2311] Family: Patrick Hand
2013-03-26 17:04:52:217 Appname[21704:2311] Names = (
    "PatrickHand-Regular"
)

我试图用两者设置字体:

self.usernameLabel.font = [UIFont fontWithName:@"PatrickHand-Regular" size:30];

self.usernameLabel.font = [UIFont fontWithName:@"PatrickHand" size:30];

我最绝望的尝试是:

for ( NSString *familyName in [UIFont familyNames] )
    {
        NSLog(@"Family: %@", familyName);
        NSLog(@"Names = %@", [UIFont fontNamesForFamilyName:familyName]);
        [self.usernameLabel setFont:[[UIFont fontNamesForFamilyName:familyName] objectAtIndex:0]];
        if ( [familyName isEqualToString:@"Patrick Hand" ])
        {
        NSLog(@"BREAK!");
        break;
        }
    }

但它仍然没有改变。

建议尝试一下?

1 个答案:

答案 0 :(得分:1)

如果要使用IBOutlet实例变量更改用户界面中的内容,则需要确保在适当的时间调用代码。

例如,假设您有类似以下的类:

@interface MDViewController : UIViewController

@property (nonatomic, strong) IBOutlet UILabel *usernameLabel;

@end

还有一个MDViewController.nib文件,用于保存视图控制器的UI,假设您要将标签的内容设置为某个值。

通常,initinitinitWithCoder:方法在对象的生命周期中过早调用,以便能够与UI中的对象进行通信,因为nib文件具有尚未完全加载,此时您的IBOutlet实例变量仍为nil

稍后,在awakeFromNibviewDidLoadviewWillAppearviewDidAppear等方法中,IBOutlets将正确设置,您可以与UI对象。

在您的情况下,viewDidLoadviewWillAppear可能是设置此值的好点(哪一个取决于您的具体需求)。