我在这里阅读了有关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;
}
}
但它仍然没有改变。
建议尝试一下?
答案 0 :(得分:1)
如果要使用IBOutlet
实例变量更改用户界面中的内容,则需要确保在适当的时间调用代码。
例如,假设您有类似以下的类:
@interface MDViewController : UIViewController
@property (nonatomic, strong) IBOutlet UILabel *usernameLabel;
@end
还有一个MDViewController.nib
文件,用于保存视图控制器的UI,假设您要将标签的内容设置为某个值。
通常,init
或init
等initWithCoder:
方法在对象的生命周期中过早调用,以便能够与UI中的对象进行通信,因为nib文件具有尚未完全加载,此时您的IBOutlet
实例变量仍为nil
。
稍后,在awakeFromNib
,viewDidLoad
,viewWillAppear
和viewDidAppear
等方法中,IBOutlets
将正确设置,您可以与UI对象。
在您的情况下,viewDidLoad
或viewWillAppear
可能是设置此值的好点(哪一个取决于您的具体需求)。