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

138

Bagaimana cara mengatur huruf tebal dan miring pada UILabeliPhone / iPad? Saya mencari di forum tetapi tidak ada yang membantu saya. Adakah yang bisa membantu saya?

Edi
sumber
Jika Anda menggunakan kustom tanpa font miring Anda dapat [coba metode ini.] [1] [1]: stackoverflow.com/questions/21009957/...
Jakehao

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

Pengembang Seluler iOS Android
sumber
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)
    }
}
Maksymilian Wojakowski
sumber
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

Sudhanshu
sumber
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

ViliusK
sumber
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];
Bahkan Cheng
sumber
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]];
John Riselvato
sumber
6

Cepat 3

Mencolok:

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

Miring:

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

Vyacheslav
sumber
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

jayesh kavathiya
sumber
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

tolbard
sumber
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;

Jordi
sumber
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.

Richard Venable
sumber
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];
Mer
sumber
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

iOSer
sumber
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)
    }
}
devjme
sumber
1

Ini sangat sederhana. Ini kodenya.

[yourLabel setFont:[UIFont boldSystemFontOfSize:15.0];

Ini akan membantu Anda.

Ashu
sumber
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 ...

ysong4
sumber
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.

Patrik Rikama-Hinnenberg
sumber
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)
swiftBoy
sumber