Ios 为什么我的UILabel不改变字体?

Ios 为什么我的UILabel不改变字体?,ios,xcode,fonts,Ios,Xcode,Fonts,我在这里读到了关于XCode中自定义字体的不同答案,但我仍然无法让它工作 我所做的: 将其添加到Plist。 添加它以复制边界资源 如果我这样做: for ( NSString *familyName in [UIFont familyNames] ) { NSLog(@"Family: %@", familyName); NSLog(@"Names = %@", [UIFont fontNamesForFamilyName:familyName]);

我在这里读到了关于XCode中自定义字体的不同答案,但我仍然无法让它工作

我所做的:

将其添加到Plist。 添加它以复制边界资源

如果我这样做:

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];

我最绝望的尝试是:

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;
        }
    }
但它仍然没有改变


建议尝试什么?

当您想使用
IBOutlet
实例变量更改用户界面中的某些内容时,需要确保在适当的时间调用代码

例如,假设您有一个如下所示的类:

@interface MDViewController : UIViewController

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

@end
还有一个
MDViewController.nib
文件,它保存视图控制器的UI,假设您希望将标签的内容设置为某个值

通常,像
init
initWithCoder:
这样的
init
方法在对象的生命周期中调用得太早,无法与UI中的对象通信,因为nib文件尚未完全加载,并且此时的
IBOutlet
实例变量仍然是
nil

稍后,在像
awakeFromNib
viewDidLoad
viewdisped
viewdisped
这样的方法中,
IBOutlets
将被正确设置,并且您可以与UI对象通信


在您的情况下,
viewDidLoad
viewwillbeen
可能是设置此值的好方法(具体取决于您的具体需要)。

当您想使用
IBOutlet
实例变量更改用户界面中的某些内容时,您需要确保在适当的时间调用代码

例如,假设您有一个如下所示的类:

@interface MDViewController : UIViewController

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

@end
还有一个
MDViewController.nib
文件,它保存视图控制器的UI,假设您希望将标签的内容设置为某个值

通常,像
init
initWithCoder:
这样的
init
方法在对象的生命周期中调用得太早,无法与UI中的对象通信,因为nib文件尚未完全加载,并且此时的
IBOutlet
实例变量仍然是
nil

稍后,在像
awakeFromNib
viewDidLoad
viewdisped
viewdisped
这样的方法中,
IBOutlets
将被正确设置,并且您可以与UI对象通信


在您的情况下,
viewDidLoad
viewwillbeen
可能是设置此值的好方法(具体取决于您的具体需要)。

尝试在Mac电脑上安装字体,打开字体手册,查看其中显示的名称。它是PatrickHand Regular吗?它上面写着“PostScript名称:PatrickHand Regular”,您试图在控制器类的哪个方法中调用
self.usernamelab.font=…
?(例如,
init
viewDidLoad
视图将出现
,等等)我猜你已经对你的项目进行了“清理”,对吧?在initWithCoder中,这是错误的吗?试着在Mac上安装字体,打开字体手册,看看里面显示了什么名称。它是PatrickHand Regular吗?它上面写着“PostScript名称:PatrickHand Regular”,您试图在控制器类的哪个方法中调用
self.usernamelab.font=…
?(例如,
init
viewDidLoad
视图将出现
,等等)我猜你已经对你的项目进行了“清理”,对吧?在initWithCoder中,这是错的吗?