最后我写了自己的解决方案。
https://stackoverflow.com/a/12281017/1565615 @Nathan R. 帮助我获得了字体大小。
然后,我提取了 UIFont 描述的字体粗细组件并相应地更改了字体,这对于自定义字体非常有用,因为现在我可以在情节提要中设置字体大小和样式,它将在 UILabel 的子类版本中进行设置。
我希望有一种更简单的方法来识别正在使用的字体粗细类型,例如 font.fontWeight 我意识到我的解决方案是冗长的,但它可以工作,任何进一步的想法都会很有用。
- (id)initWithCoder:(NSCoder *)coder
{
self = [super initWithCoder:coder];
if (self)
{
NSString *fontInfo = self.font.description;//Complete font description
NSArray *splitUpFontDescription = [fontInfo componentsSeparatedByString: @";"];//Split up
NSString *fontWeight = [[NSString alloc]init];
for (NSString *tempString in splitUpFontDescription)
{
if ([tempString rangeOfString:@"font-weight"].location != NSNotFound)//Font weight found
{
fontWeight = [tempString stringByReplacingOccurrencesOfString:@" "
withString:@""];//Remove whitespace
fontWeight = [fontWeight stringByReplacingOccurrencesOfString:@"font-weight:"
withString:@""];
}
}
NSLog(@"Font style (Weight) = *%@*",fontWeight);
if ([fontWeight isEqualToString:@"normal"])
{
//Set to custom font normal.
self.font = [UIFont fontWithName:@"FrutigerLT-Roman" size:self.font.pointSize];
}
else if([fontWeight isEqualToString:@"bold"])
{
//Set to custom font bold.
self.font = [UIFont fontWithName:@"FrutigerLT-Bold" size:self.font.pointSize];
}
}
return self;
}