कस्टम फ़ॉन्ट का आकार Xcode 6 आकार वर्ग में कस्टम फ़ॉन्ट्स के साथ ठीक से काम नहीं कर रहा है


104

Xcode 6 एक नई सुविधा जहां है फोंट और फ़ॉन्ट आकार में UILabel, UITextFieldऔर UIButtonस्वचालित रूप से वर्तमान युक्ति विन्यास के आकार वर्ग के आधार पर स्थापित किया जा सकता है, है ना स्टोरीबोर्ड में। उदाहरण के लिए, आप UILabel"किसी भी चौड़ाई, कॉम्पैक्ट ऊंचाई" (जैसे कि परिदृश्य में iPhones पर) कॉन्फ़िगरेशन और "नियमित चौड़ाई, नियमित ऊंचाई" कॉन्फ़िगरेशन (जैसे iPads पर ) का आकार 18 पर फ़ॉन्ट आकार 12 का उपयोग करने के लिए सेट कर सकते हैं । यहां अधिक जानकारी उपलब्ध है:

developer.apple.com/size_class

यह सिद्धांत में एक महान विशेषता है क्योंकि यह डिवाइस कॉन्फ़िगरेशन के आधार पर यूआई सुविधाओं पर अलग-अलग फोंट को प्रोग्रामेटिक रूप से सेट करने के लिए अनावश्यक बना सकता है। अभी, मेरे पास कुछ सशर्त कोड हैं जो डिवाइस प्रकार के आधार पर फोंट सेट करते हैं, लेकिन जाहिर है, इसका मतलब है कि मुझे पूरे ऐप में हर जगह प्रोग्राम सेट करना होगा। इसलिए मैं शुरू में इस सुविधा के बारे में वास्तव में उत्साहित था, लेकिन मैंने पाया कि यह मेरे लिए वास्तविक उपयोग (शायद एक बग) की गंभीर समस्या है। ध्यान दें कि मैं एसडीके 8 के खिलाफ निर्माण कर रहा हूं और आईओएस 8 का न्यूनतम तैनाती लक्ष्य निर्धारित कर रहा हूं , इसलिए इसका आईओएस के पुराने संस्करणों के साथ संगतता के साथ कोई लेना-देना नहीं है।

समस्या यह है: यदि मैंने विभिन्न आकार वर्गों के लिए अलग-अलग फ़ॉन्ट आकार निर्धारित किए हैं और iOS द्वारा प्रदान किए गए "सिस्टम" फ़ॉन्ट का उपयोग करते हैं , तो सब कुछ अपेक्षा के अनुसार काम करता है, और आकार वर्ग के आधार पर फ़ॉन्ट आकार बदल जाता है। यदि मैं अपने एप्लिकेशन द्वारा आपूर्ति किए गए कस्टम फ़ॉन्ट का उपयोग करता हूं (हां, मैंने इसे अपने एप्लिकेशन बंडल में सही ढंग से सेट किया है, क्योंकि यह प्रोग्रामेटिक रूप से काम करता है) और कस्टम फ़ॉन्ट को XCode 6 स्टोरीबोर्ड में एक लेबल पर सेट करता है, जो अपेक्षित रूप से भी काम करता है। लेकिन जब मैं स्टोरीबोर्ड में विभिन्न आकार वर्गों के लिए कस्टम फ़ॉन्ट के विभिन्न आकारों का उपयोग करने की कोशिश करता हूं, तो यह अचानक काम नहीं करता है। कॉन्फ़िगरेशन में एकमात्र अंतर वह फ़ॉन्ट है जिसे मैंने चुना है (एक कस्टम बनाम सिस्टम फ़ॉन्ट)। इसके बजाय, सभी फोंट पर दिखाई देते हैंडिवाइस और सिम्युलेटर के रूप में डिफ़ॉल्ट सिस्टम फ़ॉन्ट में डिफ़ॉल्ट आकार , आकार वर्ग की परवाह किए बिना (और मैं डिबगर है कि यह स्टोरीबोर्ड में निर्दिष्ट वास्तविक एक के लिए सिस्टम फ़ॉन्ट प्रतिस्थापन है के माध्यम से सत्यापित)। तो मूल रूप से, कस्टम फोंट के लिए आकार वर्ग की सुविधा टूटी हुई प्रतीत होती है। इसके अलावा, दिलचस्प बात यह है कि कस्टम फोंट वास्तव में XCode 6 "पूर्वावलोकन" फलक में आकार को ठीक से प्रदर्शित और समायोजित करते हैं, दृश्य नियंत्रक के लिए: यह केवल वास्तविक iOS सिस्टम पर चलने पर काम करना बंद कर देता है (जो मुझे लगता है कि मैं इसे सही तरीके से कॉन्फ़िगर कर रहा हूं) ।

मैंने कई अलग-अलग कस्टम फोंट की कोशिश की, और यह उनमें से किसी के लिए भी काम नहीं करता है, लेकिन यह हमेशा काम करता है अगर मैं इसके बजाय "सिस्टम" का उपयोग करता हूं।

वैसे भी, किसी और को Xcode 6 में इस समस्या को देखा है ?

यह iOS 8, Xcode, या कुछ में बग है या नहीं, इस पर कोई विचार

क्या मैं गलत कर रहा हूँ?

जैसा कि मैंने कहा, केवल एक ही समाधान मुझे मिला है, जैसे कि मैं iOS के लगभग तीन संस्करणों के लिए प्रोग्रामेटिक रूप से सेट करना जारी रखता हूं क्योंकि यह काम करता है।

लेकिन अगर मुझे यह कस्टम फोंट के साथ काम करने के लिए मिल सकता है तो मैं इस सुविधा का उपयोग करने में सक्षम होना पसंद करूंगा। सिस्टम फ़ॉन्ट का उपयोग करना हमारे डिजाइन के लिए स्वीकार्य नहीं है।


अतिरिक्त जानकारी: Xcode 8.0 के रूप में, बग को ठीक किया गया है।


3
मैं पुष्टि कर सकता हूँ कि यह अभी भी xCode 6.1 (6A1052d) ऐप स्टोर रिलीज़ में है।
jodm

3
समाधान नहीं है, लेकिन मैं श्रेणी का उपयोग करके समस्या को हल करने में कामयाब रहा हूं। मेरी श्रेणी UILabel + Font.h (मेरे पास बटन के लिए एक है) में निम्नलिखित कोड शामिल हैं। - (शून्य) awakeFromNib {फ्लोट का आकार = [स्व.फ़ोंट पॉइंटसाइज़]; self.font = [UIFont fontWithName: @ "YourCustomFont" आकार: आकार]; } तो, यह हमें विभिन्न आकार वर्गों में बिंदु मान सेट करने के लिए सिस्टम फ़ॉन्ट के साथ आकार वर्गों का उपयोग करने की अनुमति देता है, और श्रेणी सुनिश्चित करती है कि सही फ़ॉन्ट सेट है। शायद आप दे सकते हैं कि जब तक Apple एक अद्यतन जारी नहीं करता है?
डैनियल रिटायर फौरी

2
अभी भी Xcode 6.3.1 में हल नहीं हुआ है। मुझे इस पर गुस्सा आ रहा है।
रोष

7
अभी भी Xcode 7 फाइनल के साथ काम नहीं कर रहा है। समझ में नहीं आता कि Apple इसे ठीक क्यों नहीं करता।
इर्नेस्टो

5
अभी भी Xcode 7.2 iOS 9.2 पर काम नहीं कर रहा है
Mojtaba

जवाबों:


41

तेजी से तय:

1) आकार वर्गों के लिए सिस्टम के रूप में फोंट सेट करें

लेबल विशेषताएँ निरीक्षक

2) सबक्लास उइलैबेल और "लेआउटसुब्यूस" विधि को ओवरराइड करें जैसे:

- (void)layoutSubviews
{
  [super layoutSubviews];

   // Implement font logic depending on screen size
    if ([self.font.fontName rangeOfString:@"bold" options:NSCaseInsensitiveSearch].location == NSNotFound) {
        NSLog(@"font is not bold");
        self.font = [UIFont fontWithName:@"Custom regular Font" size:self.font.pointSize];
    } else {
        NSLog(@"font is bold");
        self.font = [UIFont fontWithName:@"Custom bold Font" size:self.font.pointSize];
    }

}

वैसे, यह प्रतिष्ठित फोंट के लिए एक बहुत ही सुविधाजनक तकनीक है


जबकि यह एक अच्छा वर्कअराउंड है यदि ऐप में इस्तेमाल किया गया फॉन्ट समान है, तो यह थोड़ा कम सुविधाजनक है यदि आपको अलग-अलग जगहों पर अलग-अलग फॉन्ट का उपयोग करने की आवश्यकता है, क्योंकि तब आपके पास अलग-अलग उप-वर्ग आदि होने चाहिए, मेरे मामले में, मैं पहले से ही। सेटअप प्रोग्रामेटिक फोंट थे, और कई अलग-अलग तरीके हैं जिनसे आप ऐसा कर सकते हैं। लेकिन मेरे सवाल का मुद्दा यह नहीं है कि इस कार्यक्रम को कैसे किया जाए: यह पूछना है कि स्टोरीबोर्ड का उपयोग करके यह ठीक से काम क्यों नहीं करता है (यह एक Apple बग है)।
मैनीमिया

@ एनीमिया मैं सहमत हूँ। मेरा उद्देश्य सिर्फ एक रास्ता दिखाना है कि कैसे उस बग को संभालना है।
razor28

1
बहुत अच्छा काम करता है। हालांकि आपको UILabel को उप-वर्ग करने की आवश्यकता नहीं है, आप इस पद्धति को केवल उस दृश्य में ओवरराइड कर सकते हैं जो लेबल रखता है और self.label.font = ...इस तरह से आप विभिन्न स्थानों पर विभिन्न फ़ॉन्ट का उपयोग कर सकते हैं।
केपीएम

या आप एक कस्टम लेबल वर्ग का पुन: उपयोग करने और स्टोरीबोर्ड में सीधे विभिन्न फोंट का अनुरोध करने के लिए, फ़ॉन्ट नाम को स्टोर करने के लिए, एक @IBInspectable सेट कर सकते हैं।
क्रेग ग्रुमिट

क्या UITextField के लिए समान समाधान है?
क्रिस बट्ट

17

सब कुछ आज़माने के बाद, मैं अंततः उपरोक्त समाधानों के संयोजन पर बस गया। Xcode 7.2, स्विफ्ट 2 का उपयोग करना।

import UIKit

class LabelDeviceClass : UILabel {

    @IBInspectable var iPhoneSize:CGFloat = 0 {
        didSet {
            if isPhone() {
                overrideFontSize(iPhoneSize)
            }
        }
    }

    @IBInspectable var iPadSize:CGFloat = 0 {
        didSet {
            if isPad() {
                overrideFontSize(iPadSize)
            }
        }
    }

    func isPhone() -> Bool {
        // return UIDevice.currentDevice().userInterfaceIdiom == .Phone
        return !isPad()
    }

    func isPad() -> Bool {
        // return UIDevice.currentDevice().userInterfaceIdiom == .Pad
        switch (UIScreen.mainScreen().traitCollection.horizontalSizeClass, UIScreen.mainScreen().traitCollection.verticalSizeClass) {
        case (.Regular, .Regular):
            return true
        default:
            return false
        }
    }

    func overrideFontSize(fontSize:CGFloat){
        let currentFontName = self.font.fontName
        if let calculatedFont = UIFont(name: currentFontName, size: fontSize) {
            self.font = calculatedFont
        }
    }

}
  • @IBInspectable आपको स्टोरीबोर्ड में फ़ॉन्ट आकार सेट करने देता है
  • यह एक didSetपर्यवेक्षक का उपयोग करता है , layoutSubviews()(गतिशील तालिका दृश्य पंक्ति ऊंचाइयों के लिए अनंत लूप) से नुकसान से बचने के लिए और awakeFromNib()(@ cocoaNoob की टिप्पणी देखें)
  • यह उपकरण मुहावरे के बजाय आकार की कक्षाओं का उपयोग करता है, अंततः इसके साथ उपयोग करने की उम्मीद में @IBDesignable
  • अफसोस की बात है, इस अन्य स्टैक लेख के अनुसार @IBDesignableकाम नहीं करता हैtraitCollection
  • विशेषता संग्रह स्विच स्टेटमेंट इस स्टैक आर्टिकल केUIScreen.mainScreen() बजाय पर किया जाता हैself

सर्वश्रेष्ठ उत्तर, लेकिन दुख की बात है कि वोट के लिए..धन्यवाद
रोहित प्रधान

9

वैकल्पिक हल के लिए UILabel: सभी आकार वर्गों पर एक ही फ़ॉन्ट आकार रखने के लिए, लेकिन इसके बजाय प्रत्येक आकार कक्षा में उसके अनुसार अपनी लेबल ऊंचाई बदल जाते हैं। आपके लेबल में ऑटोश्रंक सक्षम होना चाहिए। इसने मेरे मामले में अच्छा काम किया।


1
मैं प्रत्येक आकार वर्ग में अपने लेबल की चौड़ाई को बदलकर एक ही काम करने में सक्षम था। अच्छा सुझाव!
dmzza

1
मेरे UILabel के लिए एक छोटी निश्चित ऊँचाई निर्धारित करके मुझे हटने के लिए फ़ॉन्ट नहीं मिला, आपको वास्तव में यह काम करने के लिए कैसे मिला? adjustsFontSizeToFitWidthकेवल चौड़ाई के लिए काम करने लगता है (जिसका मैं उपयोग नहीं कर सकता क्योंकि लेबल का पाठ गतिशील है)।
इर्नेस्टो

मेरे पास एक ही मुद्दा है जो फिट होने के लिए समायोजित है
जूल्स

1
मैंने सुपरविवे की ऊंचाई के अनुपात में लेबल की ऊंचाई की बाधा को समाप्त किया। जब तक आप IB में लेबल के "लाइन्स" पैरामीटर को सेट करते हैं तब तक ठीक काम करता है। 0.
डोरियन रॉय

8

यह (और अन्य Xcode - Size Classes संबंधित) बग ने मुझे हाल ही में कुछ गंभीर दुःख दिए क्योंकि मुझे एक बड़ी स्टोरीबोर्ड फ़ाइल हैकिंग चीजों से दूर जाना पड़ा।

इस स्थिति में किसी और के लिए, मैं दर्द को कम करने के लिए @ razor28 के उत्तर के शीर्ष पर कुछ जोड़ना चाहूंगा।

अपने कस्टम उपवर्ग की हेडर फ़ाइल में, IBInspectableअपने रनटाइम विशेषताओं के लिए उपयोग करें। यह इन विशेषताओं को "गुण निरीक्षक" से सुलभ बना देगा, जो फ़ॉन्ट सेटिंग्स के लिए डिफ़ॉल्ट स्थिति के ठीक ऊपर है।

उदाहरण का उपयोग करें:

@interface MyCustomLabel : UILabel

    @property (nonatomic) IBInspectable NSString *fontType;
    @property (nonatomic) IBInspectable CGFloat iphoneFontSize;
    @property (nonatomic) IBInspectable CGFloat ipadFontSize;

@end

यह बहुत मदद से इस उत्पादन का उत्पादन होगा:

यहां छवि विवरण दर्ज करें

एक अतिरिक्त लाभ यह है कि अब हमें प्रत्येक लेबल के लिए मैन्युअल रूप से रनटाइम विशेषताओं को जोड़ना नहीं पड़ता है। यह निकटतम है जो मुझे XCode के इच्छित व्यवहार के लिए मिल सकता है। उम्मीद है कि इस साल की गर्मियों में iOS 9 के साथ एक उचित सुधार हो रहा है।


मैंने आपके निर्देश के अनुसार जोड़ा, लेकिन मैं एक्सिब में नेत्रहीन रूप से "गुण निरीक्षक" तक पहुंचने में सक्षम नहीं हूं, इसलिए इसे कैसे प्राप्त किया जाए?
दर्शन कुंजडिय़ा

3

@ Razor28 के एक के समान समाधान, लेकिन मुझे लगता है कि थोड़ा अधिक सार्वभौमिक है। इसके अलावा, पुराने iOS संस्करणों पर ठीक काम करता है

https://gist.github.com/softmaxsg/8a3ce30331f9f07f023e


और निश्चित रूप से, आप इंटरफ़ेस बिल्डर में संपत्ति ओवरराइडडॉटनाम सेट कर सकते हैं जो अनावश्यक कोड लिखने से बचने की अनुमति देता है
विटाली

यह मेरे लिए काम नहीं करता था, मैंने उपरोक्त विधि के भीतर सभी स्थापित फोंट सूचीबद्ध किए और मेरे फॉन्ट को वैरिएबल में सूचीबद्ध और असाइन किया गया था, लेकिन सिम्युलेटर पर लेबल में फ़ॉन्ट शो को नहीं बदला और मैं डिवाइस को मानता हूं
जूल्स

3

बग अभी भी XCode 7.0 GM में मान्य है।

रेज़र 28 का समाधान कुछ मामलों में अनंत छोरों का कारण बनता है। मेरा अनुभव इसे SwipeView के साथ संयोजन में उपयोग करने के साथ रहा है

इसके बजाय, मेरा सुझाव है कि आप:

1) उपवर्ग यूआईलैब और ओवरराइड सेटफोंट:

- (void)setFont:(UIFont *)font
{
    font = [UIFont fontWithName:(@"Montserrat") size:font.pointSize];
    [super setFont:font];
}

2) अपने UILabels के कस्टम वर्ग को सेट करें और फिर सिस्टम फ़ॉन्ट का उपयोग करके फ़ॉन्ट आकार की कक्षाएं सेट करें

यहां छवि विवरण दर्ज करें


@ Maarten1909 क्या आप वर्कअराउंड या सीधे XCode तरीके का जिक्र कर रहे हैं? यदि आप पहले संस्करण को निर्दिष्ट कर सकते हैं तो मैं इसे पुन: पेश करने का प्रयास कर सकता हूं?
फोती डिम

ऐसा लगता है कि मैं हर समय गलत फ़ॉन्ट परिवार के नाम का उपयोग कर रहा हूं। यह पता चला है कि ऐसे मामले में फोंट 14.0 पिंट-आकार के साथ सिस्टम फॉन्ट में रीसेट हो जाते हैं। मेरी गलती। लेकिन यह दूसरों के लिए उपयोगी हो सकता है!
बेरेंड्सकोट

0

समस्या अभी भी है कि आप इंटरफ़ेस बिल्डर से विभिन्न आकार वर्गों के लिए फ़ॉन्ट सेट करने के लिए सुविधा का उपयोग नहीं कर सकते।

नीचे दिए गए डिवाइस को उसी तरह सेट करें, जैसा आप नीचे चाहते हैं:

if (Your Device is iPAd) //For iPad
{
   [yourLabel setFont:[UIFont fontWithName:@"FontName" size:FontSize]]; 
}
else  //For Other Devices then iPad
{
   [yourLabel setFont:[UIFont fontWithName:@"FontName" size:FontSize]]; 
}

यह सभी उपकरणों पर पूरी तरह से काम करता है।


0

इनमें से किसी ने मेरे लिए काम नहीं किया, लेकिन यह किया। आपको IB में सिस्टम फ़ॉन्ट का उपयोग करने की भी आवश्यकता है

#import <UIKit/UIKit.h>

@interface UILabelEx : UILabel


@end

#import "UILabelEx.h"
#import "Constants.h"

@implementation UILabelEx

- (void) traitCollectionDidChange: (UITraitCollection *) previousTraitCollection {
    [super traitCollectionDidChange: previousTraitCollection];

    self.font = [UIFont fontWithName:APP_FONT size:self.font.pointSize];   
}
@end

0

फिर भी कोई सही हस्ताक्षर नहीं किया। यह कोड मेरे लिए ठीक काम करता है। आपको पहले इंटरफ़ेस बिल्डर में आकार वर्गों के लिए फ़ॉन्ट आकार को अक्षम करना होगा। आईबी में आप कस्टम फ़ॉन्ट का उपयोग कर सकते हैं।

- (void) traitCollectionDidChange: (UITraitCollection *) previousTraitCollection {
    [super traitCollectionDidChange: previousTraitCollection];

    if ((self.traitCollection.verticalSizeClass != previousTraitCollection.verticalSizeClass)
        || self.traitCollection.horizontalSizeClass != previousTraitCollection.horizontalSizeClass) {

         self.textField.font = [UIFont fontWithName:textField.font.fontName size:17.f];

    }
}

0

ऊपर दिए गए कुछ उत्तरों के संयोजन मददगार थे। यहां बताया गया है कि मैंने स्विफ्ट यूआईबेल एक्सटेंशन के जरिए आईबी बग को कैसे हल किया:

import UIKit

// This extension is only required as a work-around to an interface builder bug in XCode 7.3.1
// When custom fonts are set per size class, they are reset to a small system font
// In order for this extension to work, you must set the fonts in IB to System
// We are switching any instances of ".SFUIDisplay-Bold" to "MuseoSans-700" and ".SFUIDisplay-Regular" to "MuseoSans-300" and keeping the same point size as specified in IB

extension UILabel {
    override public func traitCollectionDidChange(previousTraitCollection: UITraitCollection?) {
        super.traitCollectionDidChange(previousTraitCollection)

        if ((traitCollection.verticalSizeClass != previousTraitCollection?.verticalSizeClass) || traitCollection.horizontalSizeClass != previousTraitCollection?.horizontalSizeClass) {
            //let oldFontName = "\(font.fontName)-\(font.pointSize)"

            if (font.fontName == systemFontRegular) {
                font = UIFont(name: customFontRegular, size: (font?.pointSize)!)
                //xlog.debug("Old font: \(oldFontName) -> new Font: \(font.fontName) - \(font.pointSize)")
            }
            else if (font.fontName == systemFontBold) {
                font = UIFont(name: customFontBold, size: (font?.pointSize)!)
                //xlog.debug("Old font: \(oldFontName) -> new Font: \(font.fontName) - \(font.pointSize)")
            }
        }
    }
}

-1

मैं स्विफ्ट, XCode 6.4 का उपयोग कर रहा हूं। तो यही वह है जो मैंने किया

import Foundation
import UIKit

    @IBDesignable class ExUILabel: UILabel {

        @IBInspectable var fontName: String = "Default-Font" {
            didSet {
                self.font = UIFont(name: fontName, size:self.font.pointSize)
            }
        }

        override func layoutSubviews() {
            super.layoutSubviews()
            self.font = UIFont(name: fontName, size:self.font.pointSize)
        }
    }
  1. गोटो डिजाइनर -> आइडेंटिटी इंस्पेक्टर -> एक्सयूबेलबेल को क्लास सेट करें

  2. फिर डिजाइनर में अटेंडेंट इंस्पेक्टर पर जाएं और फ़ॉन्ट नाम सेट करें।


-1

मैं और भी तेजी से ठीक कर रहा हूं (मुझे लगता है कि आप हमेशा अपने एक कस्टम फ़ॉन्ट का उपयोग करते हैं)।

यूआईबेल के लिए एक श्रेणी बनाएं और विभिन्न वर्गों के लिए आकार की कक्षाओं और समर्पित फ़ॉन्ट सेटिंग के साथ छोटी गाड़ी स्टोरीबोर्ड का उपयोग करके फाइलों में शामिल करें:

@implementation UILabel (FontFixForSizeClassesAppleBug)

- (void)layoutSubviews
{
    [super layoutSubviews];
    if([[UIFont systemFontOfSize:10].familyName isEqualToString:self.font.familyName]) {
        //workaround for interface builder size classes bug which ignores custom font if various classes defined for label: http://stackoverflow.com/questions/26166737/custom-font-sizing-in-xcode6-size-classes-not-working-properly-w-custom-fonts
        self.font = [UIFont fontWithName:@"YOUR_CUSTOM_FONT_NAME" size:self.font.pointSize];
    }
}

@end

बस स्टोरीबोर्ड में अपने कस्टम फोंट का उपयोग करें। जब छोटी गाड़ी दुभाषिया सिस्टम फॉन्ट का उपयोग करेगा तो आपकी खुद की यह श्रेणी इसे आपके कस्टम फॉन्ट में बदल देगी।


-1: इस तरह से श्रेणी में तरीकों को ओवरराइड करने के लिए एक अच्छा विचार नहीं है। कारण: stackoverflow.com/questions/5272451/… इसके बजाय, स्विज़ल (हालांकि हैकी) या उपवर्ग होना चाहिए।
जेआरजी-डेवलपर

-6

मैं एक ही समस्या थी और वास्तव में स्पष्ट नहीं है, लेकिन ठीक समाधान पाया!

  1. पहले आप स्टोरीबोर्ड में सिस्टम फ़ॉन्ट नाम के साथ आवश्यक फ़ॉन्ट आकार सेट करें।
  2. फिर इस लेबल पर आप 100 से 110 (या अधिक, लेकिन 10 हमेशा मेरे लिए एक दृश्य नियंत्रक में) से एक टैग प्रदान करते हैं।
  3. फिर इस कोड को अपने वीसी के सोर्स फाइल में डाल दें और फ़ॉन्ट का नाम बदलना न भूलें। कोड स्विफ्ट में।
override func viewDidLayoutSubviews() {
    for i in 100...110 {
        if let label = view.viewWithTag(i) as? UILabel {
            label.font = UIFont(name: "RotondaC-Bold", size: label.font.pointSize)
        }
    }
}

1
टैग का उपयोग न करें। IBOutlets का उपयोग करें। टैग खराब हैं। WWDC 2015 के सत्र 231 को देखें: “यदि आप टैग विथ टैग या सेट टैग यूआईवाईवाई एपीआई और शिपिंग कोड का उपयोग कर रहे हैं, तो मैं आपको इससे दूर जाने के लिए प्रोत्साहित करने जा रहा हूं। इसके प्रतिस्थापन के रूप में, अपनी कक्षाओं में गुणों की घोषणा करें, और फिर आपके पास उन विचारों के वास्तविक कनेक्शन होंगे जिनकी आपको बाद में आवश्यकता है। "
केपीएम

मुझे दुख है कि यह समाधान सही नहीं है, लेकिन यह काम करता है!
सर्ग_वॉ जूल

-8
  • अपने ऐप .plist में एप्लिकेशन द्वारा प्रदान किए गए फ़ॉन्ट जोड़ें
  • अपने .ttf फ़ाइल को आइटम 0 में जोड़ें
  • इसका उपयोग करें [UIFont fontWithName: "example.ttf" आकार: 10]

यह इस समस्या का जवाब नहीं है। जाहिर है आप कस्टम फोंट का उपयोग प्रोग्रामेटिक रूप से कर सकते हैं, लेकिन मेरा सवाल आईओएस 8 में एक बग है जो कस्टम फोंट को आकार वर्ग के आधार पर स्वचालित रूप से बदलने से रोकता है।
मेनीमिया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.