Як встановити жирний і курсивний на UILabel iPhone / iPad?


138

Як встановити жирний і курсивний на UILabeliPhone / iPad? Я шукав форум, але нічого не допомогло мені. Може хтось мені допоможе?


Якщо ви використовуєте для користувача без курсивного шрифту Ви можете [спробувати цей метод.] [1] [1]: stackoverflow.com/questions/21009957 / ...
Jakehao

Відповіді:


132
sectionLabel.font = [UIFont fontWithName:@"TrebuchetMS-Bold" size:18];

Існує список назв шрифтів, які ви можете встановити замість атрибута 'fontWithName'. Посилання тут


5
Краща відповідь - відповідь із методом розширення .withTraits () від @Maksymilian Wojakowski
Без повернення коштів не повертається

пане сер, як встановити стиль текстового поля жирним шрифтом без оголошення розміру цілі c
Рамані Хітеш

3
Це проблематично, оскільки ви використовуєте фіксовану назву шрифту. Оскільки це може бути змінено, це не є гарним рішенням. Відповідь Максиміліана Вояковського краща та набагато гнучкіша.
Рей Войцеховський

274

Не намагайтеся грати з іменами шрифту. Використовуючи дескриптор шрифту, вам не потрібно мати імен:

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

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

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

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



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

5
Не знаю, чому це не отримало більше голосів! Для шрифтів, де у вас немає жирного або курсивного стилю, це чудово!
Кріс Принс,

4
А-а-а. Я бачу, чому, можливо, це не так популярно. Доступний лише в iOS7 і вище ...
Chris Prince

3
Не знаю, чи слід це розглядати під NDA, але з Xcode6 та iOS8 GM насінням я повертаю дескриптор шрифту нуля для спеціального шрифту там, де він не був нульовим під iOS7.
Кріс Принс

@Maksymilian чи можемо ми відмовитись від цього методу десь у кількох етикетках, тобто: uitableview
Majid Bashir

2
Лише коротка примітка, оскільки ця відповідь настільки корисна: return withTraits(.TraitBold, .TraitCondensed)мабуть, вона return withTraits(.TraitBold, .TraitItalic)повинна відповідати імені функції.
BreadicalMD

103

@Edinator подивіться на це ..

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

використовуйте будь-яке з перерахованих вище за потрібний час


1
Два стилі не працюють. В цьому випадку в останньому переважає курсивний стиль. Дякую за відповідь!
Еді

@Edinator yups Я знаю, що ви повинні використовувати тільки один за одним ... я редагував свою відповідь теж!
Sudhanshu

8

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

Налаштування шрифту мітки


Але ось велике питання, окрім використання fontWithName: @ "Arial-Light", як вказати інші ваги на екрані екрану? Все викликає boldSystemFontSize (з: __), але що робити, якщо хтось хоче світла чи надлегкого?
Дейв Г

6

У мене однакова проблема, яку потрібно застосувати як жирний, так і курсивний на мітці та кнопці. Ви можете просто використовувати наступний код для досягнення цього ефекту:

myLabel.font = [UIFont fontWithName:@"Arial-BoldItalic" size:30.0];

1
Я думаю, ти мав на увазі "Аріал", а не "Аріель" :)
ММММ

Для Arial це не працює. Але, його робота для Helvetica-BoldOblique. Дивіться документацію UIFont
sudip

1
Ви маєте на увазі "HelveticaNeue", а не "Arial" :)
jpmartineau

що робити, якщо ми додамо наш спеціальний шрифт .. ??
Маджид Башир

6

З шрифтом iOS 7 за замовчуванням ви будете використовувати helvetica neue bold, якщо ви хочете зберегти шрифт системи за замовчуванням.

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

Або ви можете просто назвати це:

    [titleText setFont:[UIFont boldSystemFontOfSize:16.0]];

6

Швидкий 3

Сміливий:

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

Курсивом:

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


3
 btn.titleLabel.font=[UIFont fontWithName:@"Helvetica neue" size:10];
 btn.titleLabel.font =  [UIFont boldSystemFontOfSize:btnPrev.titleLabel.font.pointSize+3];

ви можете зробити також жирний шрифт мітки / кнопки, використовуючи це


3

Я змінив відповідь maksimmilian 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()

Це корисно при повторному використанні комірки, і ви хочете видалити курсив, який ви нанесли на мітку в попередній комірці


2

Нещодавно я написав допис у блозі про обмеження API UIFont та шляхи його вирішення. Ви можете побачити це тут

За допомогою коду, який я надаю, ви можете отримати бажаний UIFont так само просто:

UIFont *myFont = [FontResolver fontWithDescription:@"font-family: Helvetica; font-weight: bold; font-style: italic;"];

А потім встановіть його на свій UILabel (або що завгодно) за допомогою: myLabel.font = myFont;


2

Як вже було сказано в цих відповідях, вам просто потрібна правильна назва шрифту . Я вважаю, що iOSFonts.com - найкорисніший ресурс для того, щоб точно знати, яке ім’я використовувати.


Чудовий ресурс! Я переглянув його на своєму пристрої iOS і знайшов гарний шрифт, а потім застосував "fontWithName", щоб отримати його примірник.
Маркус Кнаппен Йоханссон

2

Приклад жирного тексту:

UILabel *titleBold = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 200, 30)];
UIFont* myBoldFont = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];
[titleBold setFont:myBoldFont];

Приклад курсивного тексту:

UILabel *subTitleItalic = [[UILabel alloc] initWithFrame:CGRectMake(10, 35, 200, 30)];
UIFont* myItalicFont = [UIFont italicSystemFontOfSize:[UIFont systemFontSize]];
[subTitleItalic setFont:myItalicFont];

2

Хоча відповідь, надана @tolbard, дивовижна і працює добре!

Я вважаю, що створення розширення для чогось, що можна досягти лише за допомогою рядка коду, було б надмірним вбивством.

Ви можете отримати жирний і курсивний стиль для того ж тексту у вашому label, встановивши властивість шрифту, використовуючи, UIFontDescriptorяк показано нижче в прикладі нижче, використовуючи Swift 4.0 :

label.font = UIFont(descriptor: UIFontDescriptor().withSymbolicTraits([.traitBold, .traitItalic])!, size: 12)

Інші варіанти включають:

traitLooseLeading
traitTightLeading
traitUIOptimized
traitVertical
traitMonoSpace
traitCondensed
traitExpanded

Для отримання додаткової інформації про те, що означають ці символічні риси? завітайте сюди


2

Оновлення дивовижної відповіді Максиміліана Вояковського за швидку 3

extension UIFont {
    func withTraits(traits:UIFontDescriptorSymbolicTraits...) -> UIFont? {
        guard let descriptorL = self.fontDescriptor.withSymbolicTraits(UIFontDescriptorSymbolicTraits(traits)) else{
            return nil
        }
        return UIFont(descriptor: descriptorL, size: 0)
    }

    func boldItalic() -> UIFont? {
        return withTraits(traits: .traitBold, .traitItalic)
    }
}

1

Це дуже просто. Ось код.

[yourLabel setFont:[UIFont boldSystemFontOfSize:15.0];

Це вам допоможе.


Це не встановлює курсив.
mattsson

Це буде встановлено лише жирним шрифтом. Для Italic ви можете скористатися конструктором інтерфейсів.
Ашу

1

Просто хочу згадати це,

UIFont.systemFont(ofSize: 16, weight: UIFont.Weight.bold)
UIFont.boldSystemFont(ofSize: 16)

Вони мають різний результат ...


0

Багато разів напівжирний текст розглядається в інформаційній архітектурній формі на іншому рівні і, таким чином, не є жирним і регулярним в одному рядку, тому ви можете розділити його на дві мітки / textViews, одну звичайну та на жирному курсиві. І за допомогою редактора виберіть стилі шрифту.


0

З Swift 5

Для стилю = BOLD

label.font = UIFont(name:"HelveticaNeue-Bold", size: 15.0)

Для стилю = середній

label.font = UIFont(name:"HelveticaNeue-Medium", size: 15.0)

Для стилю = тонкий

label.font = UIFont(name:"HelveticaNeue-Thin", size: 15.0)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.