Как установить жирный и курсивный на UILabel iPhone / iPad? - PullRequest
126 голосов
/ 17 января 2011

Как установить жирный и курсив на UILabel iPhone / iPad? Я искал форум, но ничего не помогло мне. Кто-нибудь может мне помочь?

Ответы [ 17 ]

239 голосов
/ 14 февраля 2014

Не пытайтесь играть с именами шрифтов.При использовании дескриптора шрифта вам не нужны имена:

UILabel * label = [[UILabel alloc] init]; // use your label object instead of this
UIFontDescriptor * fontD = [label.font.fontDescriptor
            fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold
                            | UIFontDescriptorTraitItalic];
label.font = [UIFont fontWithDescriptor:fontD size:0];

size:0 означает «сохранить размер как есть»

С Swift попробуйте следующее расширение:

extension UIFont {

    func withTraits(traits:UIFontDescriptorSymbolicTraits...) -> UIFont {
        let descriptor = self.fontDescriptor()
            .fontDescriptorWithSymbolicTraits(UIFontDescriptorSymbolicTraits(traits))
        return UIFont(descriptor: descriptor, size: 0)
    }

    func boldItalic() -> UIFont {
        return withTraits(.TraitBold, .TraitItalic)
    }

}

Тогда вы можете использовать это следующим образом:

myLabel.font = myLabel.font.boldItalic()

или даже добавить дополнительные черты, такие как Сгущенные:

myLabel.font = myLabel.font.withTraits(.TraitCondensed, .TraitBold, .TraitItalic)

Обновление для Swift 4:

extension UIFont {
  var bold: UIFont {
    return with(traits: .traitBold)
  } // bold

  var italic: UIFont {
    return with(traits: .traitItalic)
  } // italic

  var boldItalic: UIFont {
    return with(traits: [.traitBold, .traitItalic])
  } // boldItalic


  func with(traits: UIFontDescriptorSymbolicTraits) -> UIFont {
    guard let descriptor = self.fontDescriptor.withSymbolicTraits(traits) else {
      return self
    } // guard

    return UIFont(descriptor: descriptor, size: 0)
  } // with(traits:)
} // extension

Использованиеэто выглядит следующим образом:

myLabel.font = myLabel.font.bold

или

myLabel.font = myLabel.font.italic

или

myLabel.font = myLabel.font.with(traits: [ .traitBold, .traitCondensed ])

Swift 5

    func with(_ traits: UIFontDescriptor.SymbolicTraits...) -> UIFont {
        guard let descriptor = self.fontDescriptor.withSymbolicTraits(UIFontDescriptor.SymbolicTraits(traits).union(self.fontDescriptor.symbolicTraits)) else {
            return self
        }
        return UIFont(descriptor: descriptor, size: 0)
    }

    func without(_ traits: UIFontDescriptor.SymbolicTraits...) -> UIFont {
        guard let descriptor = self.fontDescriptor.withSymbolicTraits(self.fontDescriptor.symbolicTraits.subtracting(UIFontDescriptor.SymbolicTraits(traits))) else {
            return self
        }
        return UIFont(descriptor: descriptor, size: 0)
    }
130 голосов
/ 17 января 2011
sectionLabel.font = [UIFont fontWithName:@"TrebuchetMS-Bold" size:18];

Существует список имен шрифтов, которые вы можете установить вместо атрибута 'fontWithName'. Ссылка здесь

100 голосов
/ 17 января 2011

@ Edinator взгляните на это ..

myLabel.font = [UIFont boldSystemFontOfSize:16.0f]
myLabel.font = [UIFont italicSystemFontOfSize:16.0f];

используйте любой из вышеперечисленных в нужный момент

8 голосов
/ 28 августа 2015

Вы можете установить любой стиль шрифта, семейство, размер для метки, нажав на букву "T" в поле Шрифт .

Label font settings

6 голосов
/ 26 сентября 2013

С системным шрифтом по умолчанию для iOS 7 вы будете использовать helvetica neue bold, если хотите сохранить системный шрифт по умолчанию.

    [titleText setFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:16.0]];

Или вы можете просто назвать это:

    [titleText setFont:[UIFont boldSystemFontOfSize:16.0]];
6 голосов
/ 13 августа 2012

У меня та же проблема, что и для надписи, и для кнопки необходимо использовать жирный шрифт и курсив. Вы можете просто использовать следующий код для достижения этого эффекта:

myLabel.font = [UIFont fontWithName:@"Arial-BoldItalic" size:30.0];
3 голосов
/ 24 февраля 2017

Я сделал вариант ответа maksymilian wojakowski, где вы можете добавить или удалить признак (и)

extension UIFont {

    func withTraits(_ traits:UIFontDescriptorSymbolicTraits...) -> UIFont {
        let descriptor = self.fontDescriptor
            .withSymbolicTraits(UIFontDescriptorSymbolicTraits(traits).union(self.fontDescriptor.symbolicTraits))
        return UIFont(descriptor: descriptor!, size: 0)
    }
    func withoutTraits(_ traits:UIFontDescriptorSymbolicTraits...) -> UIFont {
        let descriptor = self.fontDescriptor
            .withSymbolicTraits(  self.fontDescriptor.symbolicTraits.subtracting(UIFontDescriptorSymbolicTraits(traits)))
        return UIFont(descriptor: descriptor!, size: 0)
    }
    func bold() -> UIFont {
        return withTraits( .traitBold)
    }

    func italic() -> UIFont {
        return withTraits(.traitItalic)
    }

    func noItalic() -> UIFont {
        return withoutTraits(.traitItalic)
    }
    func noBold() -> UIFont {
        return withoutTraits(.traitBold)
    }
}

пример

label.font = label.font.italic().bold()

это полезно при повторном использовании ячейки, и выхотите удалить курсив, который вы поместили на ярлык в предыдущей ячейке

3 голосов
/ 02 января 2017

Swift 3

Полужирный:

let bondFont = UIFont.boldSystemFont(ofSize:UIFont.labelFontSize)

Курсив:

let italicFont = UIFont.italicSystemFont(ofSize:UIFont.labelFontSize)

3 голосов
/ 17 января 2011

посмотрите на: этот URL

3 голосов
/ 13 августа 2012
 btn.titleLabel.font=[UIFont fontWithName:@"Helvetica neue" size:10];
 btn.titleLabel.font =  [UIFont boldSystemFontOfSize:btnPrev.titleLabel.font.pointSize+3];

Вы можете сделать шрифт полужирного ярлыка / кнопки, также используя этот

...