iOS中具有大小类的自定义字体无法正常工作

时间:2015-10-30 08:08:33

标签: ios size-classes

我尝试使用尺寸类为iphone和ipad布局添加2种不同的字体大小。它使用默认的系统字体很酷,但不能使用自定义字体。如果我为wR hR添加第二个大小,那么字体在界面构建器中看起来正确(我甚至检查过xml)但是在模拟器和设备上它变成了System而不是我的自定义字体。但是,如果我删除wR hR(或我用于其他尺寸的任何布局),则字体显示正确。不知道如何解决这个问题?谢谢!

我正在使用xCode7

2 个答案:

答案 0 :(得分:0)

设置自定义字体的步骤。

1)将字体设置为System for size size

Rails docs

2)子类UILabel并覆盖" layoutSubviews"方法如:

- (void)layoutSubviews
{
  [super layoutSubviews];
  // Implement font logic depending on screen size
  self.font = [UIFont fontWithName:@"CustomFont" size:self.font.pointSize];
}

可能会帮助你。

答案 1 :(得分:0)

enter image description here

//Create Custom class of UILabel

class LabelDeviceClass : UILabel{
@IBInspectable var fontBold: Bool = true // add bold bool variable in attributes inspector
@IBInspectable var fontItalic: Bool = true / add italic bool variable in attributes inspector


//this code add font size in attributes inspector so you can give font size 
 @IBInspectable var iPhoneSize:CGFloat = 0 {
    didSet {
        if isPhone() {
            overrideFontSize(fontSize: iPhoneSize)
        }
    }
}

@IBInspectable var iPadSize:CGFloat = 0 {
    didSet {
        if isPad() {
            overrideFontSize(fontSize: iPadSize)
        }
    }
}
 func overrideFontSize(fontSize:CGFloat){
    var currentFontName = "SofiaPro"//font name you want to use

    if fontBold{
        currentFontName = "SofiaPro-Bold"
    }
    else if fontItalic{
        currentFontName = "SofiaPro-Italic"
    }

   if let calculatedFont = UIFont(name: currentFontName, size: fontSize) {
            self.font = calculatedFont
    }


}

}