1

我在这里阅读了关于 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];

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

但它仍然没有改变。

建议尝试什么?

4

1 回答 1

1

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

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

@interface MDViewController : UIViewController

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

@end

还有一个MDViewController.nib文件包含视图控制器的 UI,假设您想将标签的内容设置为某个值。

通常,在对象的生命周期中调用init类似initor的方法initWithCoder:太早,无法与 UI 中的对象进行通信,因为 nib 文件尚未完全加载,IBOutlet此时您的实例变量仍将是nil.

稍后,在 、 、 和 等方法awakeFromNibviewDidLoadviewWillAppearviewDidAppear正确IBOutlets设置 ,您可以与 UI 对象进行通信。

在您的情况下,viewDidLoad或者viewWillAppear可能是设置此值的好点(取决于您的具体需求)。

于 2013-03-26T16:46:12.933 回答