İPhone / iPad'in UILabel'ında nasıl kalın ve italik ayarlayabilirim?


Yanıtlar:


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

Eğer attribute.The link 'fontWithName' yerine ayarlayabileceğini yazı adlarının bir listesi vardır burada


5
Daha iyi cevap @Maksymilian Wojakowski gelen uzatma yöntemi .withTraits ile bir () 'dir
Hayır İade Hayır İadeler

efendim efendim ilan boyutu c
cure

3
Sabit bir yazı tipi adı kullandığınız için bu sorunludur. Bu değişikliğe tabi olduğundan, bu iyi bir çözüm değildir. Maksymilian Wojakowski'nin cevabı daha iyi ve çok daha esnektir.
Ray Wojciechowski

275

Yazı tipi adlarıyla oynamaya çalışmayın. Yazı tipi tanımlayıcısını kullanarak isme ihtiyacınız yoktur:

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 'boyutu olduğu gibi tut' anlamına gelir

Swift ile aşağıdaki uzantıyı deneyin:

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

}

O zaman bu şekilde kullanabilirsiniz:

myLabel.font = myLabel.font.boldItalic()

hatta Yoğunlaştırılmış gibi ek özellikler de ekleyebilirsiniz:

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

Swift 4 için güncelleme:

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

Aşağıdaki gibi kullanın:

myLabel.font = myLabel.font.bold

veya

myLabel.font = myLabel.font.italic

veya

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

Swift 5 için güncelleme

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
Bunun neden daha fazla oy almadığını bilmiyorum! Kalın veya italik bir stile sahip olmadığınız yazı tipleri için bu harika!
Chris Prince

4
Ahhh. Bunun neden bu kadar popüler olmadığını anlıyorum. Sadece iOS7 ve üzeri sürümlerde mevcut ...
Chris Prince

3
Bunun NDA altında düşünülmesi gerekip gerekmediğini bilmiyorum, ancak Xcode6 ve iOS8 GM çekirdeği ile, iOS7 altında nil olmadığı için özel bir yazı tipi için geri nil yazı tipi tanımlayıcısı alıyorum.
Chris Prince

@Maksymilian, bu yöntemi birden fazla etikette bir yerde reddedebilir miyiz: uitableview
Majid Bashir

2
Bu yanıt çok faydalı olduğu için kısa bir not: return withTraits(.TraitBold, .TraitCondensed)muhtemelen return withTraits(.TraitBold, .TraitItalic)işlev adıyla eşleşmelidir.
BreadicalMD

103

@Edinator buna bir göz atın ..

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

istediğiniz zaman yukarıdakilerden herhangi birini kullanın


1
İki stil çalışmıyor. Bu durumda, ikincisi italik tarzı hakimdir. Cevap için teşekkürler!
Edi

@Edinator yups her seferinde sadece bir tane kullanmanız gerektiğini biliyorum ... cevabımı da düzenledim!
Sudhanshu

8

İçeri "T" harfi tıklayarak, etiket için herhangi yazı stili, ailesini, boyutunu ayarlayabilir Yazı alanında.

Etiket yazı tipi ayarları


Ama büyük soru, fontWithName: @ "Arial-Light" kullanmanın yanı sıra, ekran görüntünüzdeki diğer ağırlıkları nasıl belirlersiniz? Her şey boldSystemFontSize değerini (ve: __) getirir, ancak biri hafif veya ultra hafif isterse ne olur?
Dave G

6

Bir etiket ve düğmeye hem Kalın hem de İtalik uygulanması gereken aynı sorun var. Bu efekti elde etmek için aşağıdaki kodu kullanabilirsiniz:

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

1
Bence, "Ariel" değil "Arial" demek
istediniz

Arial için çalışmıyor. Ancak Helvetica-BoldOblique için çalışıyor. Buradaki UIFont belgelerine bakın iphonedevwiki.net/index.php/UIFont
sudip

1
"Arial" değil, "HelveticaNeue" demek istediniz
jpmartineau 11:13

özel yazı tipimizi eklersek ne olur ??
Majid Bashir

6

İOS 7 sistem varsayılan yazı tipiyle, sistem varsayılan yazı tipini korumak istiyorsanız helvetica neue bold'u kullanacaksınız.

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

Veya sadece şunu arayabilirsiniz:

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

6

Hızlı 3

kalın:

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

İtalik:

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

bunu kullanarak kalın etiket / düğme yazı tipi de yapabilirsiniz


3

Bir özellik (ler) ekleyebileceğiniz veya kaldırabileceğiniz maksymilian wojakowski'nin yanıtında bir değişiklik yaptım

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

exemple

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

hücreyi yeniden kullanırken faydalıdır ve önceki hücreye bir etikete koyduğunuz italik işaretini kaldırmak istediğinizde


2

Son zamanlarda UIFont API'sinin kısıtlamaları ve nasıl çözüleceği hakkında bir blog yazısı yazdım. Burada görebilirsiniz

Ben orada kod ile, istediğiniz UIFont kadar kolay alabilirsiniz:

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

Ve daha sonra UILabel'inize (veya her neyse) ayarlayın: myLabel.font = myFont;


2

Bu cevaplarda daha önce bahsedildiği gibi, sadece doğru yazı tipi adına ihtiyacınız var . Hangi adın kullanılacağını bilmek için iOSFonts.com'un en yararlı kaynak olduğunu düşünüyorum .


Harika bir kaynak! İOS aygıtımda gezdim ve iyi görünümlü bir yazı tipi buldum ve ardından bir örnek almak için "fontWithName" kullandım.
Markus Knappen Johansson

2

Örnek Kalın metin:

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

İtalik metin örneği:

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

2

@Tolbard tarafından verilen cevap şaşırtıcı ve iyi çalışıyor olsa da!

Ben sadece bir kod satırında elde edilebilir bir şey için bir uzantı oluşturmak hissediyorum, bir aşırı öldürmek olacaktır.

Swift 4.0 kullanarak aşağıdaki örnekte gösterildiği gibi font özelliğini ayarlayarak , aynı metin için kalın ve italik stil elde edebilirsiniz : labelUIFontDescriptor

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

Diğer seçenekler:

traitLooseLeading
traitTightLeading
traitUIOptimized
traitVertical
traitMonoSpace
traitCondensed
traitExpanded

Bu sembolik özelliklerin ne anlama geldiği hakkında daha fazla bilgi için? burayı ziyaret et


2

Hızlı 3 için Maksymilian Wojakowski'nin harika cevabını güncelleme

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

Bu çok basit. İşte kod.

[yourLabel setFont:[UIFont boldSystemFontOfSize:15.0];

Bu sana yardım edecek.


Bu italik yazmaz.
mattsson

Bu yalnızca kalın yazılacaktır. İtalik için arayüz oluşturucu ile kullanabilirsiniz.
Ashu

1

Sadece bundan bahsetmek istiyorum,

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

Farklı sonuçları var ...


0

Birçok kez kalın metin başka bir düzeyde bir bilgi mimarisi biçiminde kabul edilir ve bu nedenle bir satırda kalın ve düzenli olmaz, böylece bunu bir tane normal ve kalın italik olarak iki etiket / textViews'e bölebilirsiniz. Ve yazı tipi stillerini seçmek için düzenleyiciyi kullanın.


0

İle Swift 5

Stil için = BOLD

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

Stil için = Orta

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

Stil için = İnce

label.font = UIFont(name:"HelveticaNeue-Thin", size: 15.0)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.