Bagaimana cara mengatur huruf tebal dan miring pada UILabel iPhone / iPad?


Jawaban:


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

Ada daftar nama font yang dapat Anda atur sebagai ganti atribut 'fontWithName'. Tautan ada di sini


5
Jawaban yang lebih baik adalah yang dengan metode ekstensi .withTraits () dari @Maksymilian Wojakowski
Tidak Ada Pengembalian Uang Tidak Ada Pengembalian

pak sir bagaimana mengatur gaya kotak teks tebal tanpa menyatakan ukuran objektif c
Ramani Hitesh

3
Ini bermasalah karena Anda menggunakan nama font yang tetap. Karena ini dapat berubah, ini bukan solusi yang baik. Jawaban dari Maksymilian Wojakowski lebih baik dan jauh lebih fleksibel.
Ray Wojciechowski

274

Jangan mencoba bermain dengan nama font. Menggunakan deskriptor font Anda tidak perlu nama:

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 berarti 'pertahankan ukuran apa adanya'

Dengan Swift coba ekstensi berikut:

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

}

Maka Anda dapat menggunakannya dengan cara ini:

myLabel.font = myLabel.font.boldItalic()

atau bahkan menambahkan sifat-sifat tambahan seperti Terkondensasi:

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

Pembaruan untuk 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

Gunakan sebagai berikut:

myLabel.font = myLabel.font.bold

atau

myLabel.font = myLabel.font.italic

atau

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

Pembaruan untuk 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
Tidak tahu mengapa ini belum menerima suara lebih banyak! Untuk font di mana Anda tidak memiliki gaya huruf tebal atau miring, ini hebat!
Chris Prince

4
Ahhh Saya mengerti mengapa mungkin ini tidak begitu populer. Hanya tersedia di iOS7 dan di atasnya ...
Chris Prince

3
Tidak tahu apakah ini harus dipertimbangkan di bawah NDA, tetapi dengan Xcode6 dan iOS8 GM seed, saya mendapatkan deskriptor font nil kembali untuk font khusus di mana karena itu tidak nol di iOS7.
Chris Prince

@Maksymilian dapatkah kita menolak metode ini di beberapa label, yaitu: uitableview
Majid Bashir

2
Hanya catatan singkat karena jawaban ini sangat membantu: return withTraits(.TraitBold, .TraitCondensed)mungkin harus return withTraits(.TraitBold, .TraitItalic)cocok dengan nama fungsi.
BreadicalMD

103

@ Editor melihat ini ..

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

gunakan salah satu di atas pada waktu yang Anda inginkan


1
Kedua gaya tidak bekerja. Dalam hal ini yang terakhir berlaku gaya italic. Terima kasih atas balasan!
Edi

@ Pendapat yups saya tahu bahwa Anda harus menggunakan hanya satu per satu ... saya telah mengedit jawaban saya juga!
Sudhanshu

8

Anda dapat mengatur gaya font, keluarga, ukuran untuk label apa pun, dengan mengklik huruf "T" di bidang Font .

Pengaturan font label


Tapi inilah pertanyaan besar, selain menggunakan fontWithName: @ "Arial-Light" bagaimana Anda menentukan bobot lainnya di tangkapan layar Anda? Semuanya menampilkan boldSystemFontSize (dari: __) tetapi bagaimana jika seseorang menginginkan cahaya atau ultra-cahaya?
Dave G

6

Saya memiliki masalah yang sama yang perlu menerapkan Bold dan Italic pada label dan tombol. Anda cukup menggunakan kode berikut untuk mencapai efek ini:

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

1
Saya pikir, Anda berarti "Arial", bukan "Ariel" :)
MMMM

Karena Arial tidak bekerja. Tapi, ini bekerja untuk Helvetica-BoldOblique. Lihat dokumentasi UIFont di sini iphonedevwiki.net/index.php/UIFont
sudip

1
Maksud Anda "HelveticaNeue", bukan "Arial" :)
jpmartineau

bagaimana jika kita menambahkan font khusus kita .. ??
Majid Bashir

6

Dengan font default sistem iOS 7, Anda akan menggunakan helvetica neue bold jika Anda ingin mempertahankan font default sistem.

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

Atau Anda bisa menyebutnya:

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

6

Cepat 3

Mencolok:

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

Miring:

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];

Anda dapat melakukan huruf tebal / font tombol juga menggunakan ini


3

Saya membuat variasi respons dari maksymilian wojakowski di mana Anda dapat menambah atau menghapus suatu sifat

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

contoh

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

itu berguna saat menggunakan kembali sel dan Anda ingin menghapus huruf miring yang Anda pasang pada label di sel sebelumnya


2

Baru-baru ini saya menulis posting blog tentang pembatasan API UIFont dan bagaimana menyelesaikannya. Anda bisa melihatnya di sini

Dengan kode yang saya berikan di sana, Anda bisa mendapatkan UIFont yang Anda inginkan semudah:

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

Dan kemudian atur ke UILabel Anda (atau apa pun) dengan: myLabel.font = myFont;


2

Seperti yang telah disebutkan dalam jawaban ini, Anda hanya perlu nama font yang tepat . Saya menemukan bahwa iOSFonts.com adalah sumber yang paling membantu untuk mengetahui dengan tepat nama yang akan digunakan.


Sumber daya hebat! Saya melihat-lihat di perangkat iOS saya dan menemukan font yang tampak bagus dan kemudian menggunakan "fontWithName" untuk mendapatkan contohnya.
Markus Knappen Johansson

2

Contoh teks tebal:

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

Contoh teks Miring:

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

2

Meskipun jawaban yang diberikan oleh @tolbard luar biasa dan bekerja dengan baik!

Saya merasa membuat ekstensi untuk sesuatu yang dapat dicapai hanya dalam satu baris kode, akan lebih dari membunuh.

Anda bisa mendapatkan tebal serta miring styling untuk teks yang sama di Anda labeldengan menyiapkan properti font menggunakan UIFontDescriptorseperti yang ditunjukkan di bawah ini pada contoh di bawah menggunakan Swift 4.0 :

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

Pilihan lain termasuk:

traitLooseLeading
traitTightLeading
traitUIOptimized
traitVertical
traitMonoSpace
traitCondensed
traitExpanded

Untuk informasi lebih lanjut tentang apa arti sifat-sifat simbolis itu? kunjungi di sini


2

Memperbarui jawaban mengagumkan Maksymilian Wojakowski untuk cepat 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

Ini sangat sederhana. Ini kodenya.

[yourLabel setFont:[UIFont boldSystemFontOfSize:15.0];

Ini akan membantu Anda.


Itu tidak diatur miring.
mattsson

Ini hanya akan dicetak tebal. Untuk Miring Anda dapat menggunakan oleh pembangun antarmuka.
Ashu

1

Hanya ingin menyebutkan itu,

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

Mereka memiliki hasil yang berbeda ...


0

Banyak kali teks tebal dianggap dalam cara arsitektur informasi di tingkat lain dan dengan demikian tidak tebal dan teratur dalam satu baris, sehingga Anda dapat membaginya menjadi dua label / teksBerita, satu huruf miring biasa dan tebal. Dan gunakan editor untuk memilih gaya font.


0

Dengan Swift 5

Untuk style = BOLD

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

Untuk style = Medium

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

Untuk gaya = Tipis

label.font = UIFont(name:"HelveticaNeue-Thin", size: 15.0)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.