2016-10-14 32 views
5

Storyboard'da Global Tint'u nasıl ayarlayabileceğimiz gibi, genel font ailesini başka bir şey olarak ayarlamak mümkün mü? Örneğin, Sistemden Source Sans Pro 16pt'a Global/Varsayılan Font'u değiştirmek istiyorum. Film Şeridi 'nde her bir etiket, düğme, TextField vs.XCode - Varsayılan Genel Font'u Storyboard olarak değiştirin

  1. değiştir font: Ancak, ben aşağıdakilerden biridir (bildiğim kadarıyla) ne ilgisi var.
  2. (2) (1) film şeritlerini kullanarak gibi görsel geri bildirimler almak kalmamasıdır ile this question

My Problem açıklandığı gibi Swift viewDidLoad Kanunu (gibi this question) üzerinden veya uzantıları aracılığıyla ayarlayın. Diğer yandan, el ile ayarlamak zorunda olduğumdan da çok elverişli değil.

Öyleyse, varsayılan Storyboard yazı tipini değiştirmenin/ayarlamanın bir yolu var mı?

+0

Maalesef met: vb

Kod örneği yukarıdaki bağlantıya göre senin textfields, düğmeler, için tton vb. Eğer bir globalConstants.h dosyası yaparsanız, gibi bir yazı tipini bildirelim: ICON_FONT = UIFont (isim: "OpenSans-Bold" boyutu: 30) ve her etikete yazı tipi verin. Şimdi yazı tipini değiştirirseniz, globalConstant dosyasında sadece bir değişiklik. –

cevap

2

Tüm kontroller (zamanında) aynı yazı tipini sahip olmasını sağlamak Görünüm ile UIButton için yazı tipini nasıl ayarlanacağı konusunda bu question de

Bak için, Görünüm API kullanabilirsiniz.

UILabel ve UITextView için aşağıdakileri yapın. Bu ancak film şeridi güncelleme olmayacak,

let labelAppearance = UILabel.appearance() 
labelAppearance.font = UIFont.myFont() 

let textFieldAppearance = UITextView.appearance() 
textFieldAppearance.font = UIFont.myFont() 

önceki çözüm AppDelegate application(_:didFinishLaunchingWithOptions:) yapılabilir.

işleve

prepareForInterfaceBuilder() 

Here içine bakabilir, görsel film şeridinde değişiklikleri görmek için bu görsel Film şeridinde güncellenmesini açıklar bir cevaptır, ancak bunun için özel sınıflar kullanmanız gerekecektir Eğer tüm etiketin elle yazı tipi ayarlamak zorunda ama

@IBDesignable 
public class MyUILabel: UILabel { 

    public override func awakeFromNib() { 
     super.awakeFromNib() 
     configureLabel() 
    } 

    public override func prepareForInterfaceBuilder() { 
     super.prepareForInterfaceBuilder() 
     configureLabel() 
    } 

    func configureLabel() { 
     font = UIFont(name: Constants.DefaultFont, size: 40) 
    } 

} 
+1

Ama özel 'MyUILabel' durumunda, tüm UILabels sınıfını değiştirmek zorunda kalacaksın, değil mi? Tüm etiketlerin yazı tipini değiştirmek için tekrarlanan bir şey değil mi? – tika

+1

Bu cevap, OP'nin no. 2? IB bölümü hariç, ama tika gibi fazla katma değer olmadığını söyledi. – HAS

+0

@tika Bu, yinelemeli olabilir (benim düşüncem yazı tipini + boyuttan daha hızlı değiştirmek olsa da), ancak kazanacağınız şey, tüm uygulamanın yazı tipini değiştirmek istediğinizde tek bir yerde. –