UIButton कस्टम फ़ॉन्ट ऊर्ध्वाधर संरेखण


118

मुझे UIButtonएक कस्टम फ़ॉन्ट का उपयोग करने के लिए मिला है , जो मेरे दृश्य लोड होने पर सेट किया गया है:

- (void)viewDidLoad
{
    [super viewDidLoad];    
    self.searchButton.titleLabel.font = [UIFont fontWithName: @"FONTNAME" size: 15.0 ];
}

मुझे जो समस्या आई है वह यह है कि फ़ॉन्ट केंद्र रेखा के ऊपर तैर रहा है। यदि मैं इस लाइन पर टिप्पणी करता हूं, तो डिफ़ॉल्ट फ़ॉन्ट लंबवत केंद्रित दिखाई देता है। लेकिन कस्टम फ़ॉन्ट में बदलने से ऊर्ध्वाधर संरेखण टूट जाता है।

मुझे कस्टम फ़ॉन्ट के साथ तालिका सेल पर भी यही मुद्दा मिल रहा है।

क्या मुझे कहीं यह देखने की ज़रूरत है कि कस्टम फ़ॉन्ट अन्य फोंट की तरह लंबा नहीं है?

संपादित करें: मैंने महसूस किया है कि मैं जिस फ़ॉन्ट का उपयोग कर रहा हूं वह विंडोज ट्रू टाइप फ़ॉन्ट है। मैं इसे मैक पर TextEdit में ठीक उपयोग कर सकता हूं, केवल मेरे ऐप में संरेखण के साथ एक समस्या है

बटन पाठ लंबवत केंद्रित नहीं है


मुझे इस फॉन्ट (.otf, not .ttf
Neal Ehardt

जवाबों:


312

इसी तरह की समस्या पर चर्चा की गई थी कि कस्टम स्थापित फ़ॉन्ट को UILabel में सही ढंग से प्रदर्शित नहीं किया गया है । कोई समाधान नहीं दिया गया था।

यहाँ समाधान है कि मेरे कस्टम फ़ॉन्ट के लिए काम किया है जो UILabel, UIButton और में एक ही मुद्दा था। फॉन्ट के साथ समस्या यह थी कि सिस्टम फोंट के मूल्य की तुलना में इसकी आरोही संपत्ति बहुत कम थी। Ascender फ़ॉन्ट के पात्रों के ऊपर एक ऊर्ध्वाधर व्हाट्सएप है। अपने फ़ॉन्ट को ठीक करने के लिए आपको Apple फ़ॉन्ट टूल सूट कमांड लाइन उपयोगिताओं को डाउनलोड करना होगा । फिर अपना फ़ॉन्ट लें और निम्न कार्य करें:

~$ ftxdumperfuser -t hhea -A d Bold.ttf

यह पैदा करेगा Bold.hhea.xml। इसे टेक्स्ट एडिटर से खोलें और ascenderविशेषता के मूल्य में वृद्धि करें । आपके लिए सबसे अच्छा काम करने वाले सटीक मूल्य का पता लगाने के लिए आपको थोड़ा प्रयोग करना होगा। मेरे मामले में मैंने इसे 750 से बदलकर 1200 कर दिया। फिर ttf फ़ाइल में अपने परिवर्तनों को वापस मर्ज करने के लिए निम्न कमांड लाइन के साथ फिर से उपयोगिता चलाएं:

~$ ftxdumperfuser -t hhea -A f Bold.ttf

तो बस अपने अनुप्रयोग में परिणामी ttf फ़ॉन्ट का उपयोग करें।

OS X El Capitan

ऐप्पल फॉन्ट टूल सूट इंस्टॉलर एसआईपी की वजह से ओएसएक्स एल कैपिटन पर अब काम नहीं करता है क्योंकि यह बाइनरी फ़ाइलों को एक संरक्षित निर्देशिका में स्थापित करने की कोशिश करता है। आपको मैन्युअल रूप से निकालना होगा ftxdumperfuser। सबसे पहले बाद में खोल एक स्थानीय निर्देशिका के लिए डीएमजी से pkg कॉपी OS X Font Tools.pkgके साथ

~$ xar -xf OS\ X\ Font\ Tools.pkg

अब फ़ोल्डर में नेविगेट fontTools.pkgसाथ

~$ cd fontTools.pkg/

के साथ पेलोड निकालें

~$ cat Payload | gunzip -dc | cpio -i

अब ftxdumperfuserबाइनरी आपके वर्तमान फ़ोल्डर में है। आप इसे स्थानांतरित /usr/local/bin/कर सकते हैं ताकि आप टर्मिनल एप्लिकेशन के अंदर प्रत्येक फ़ोल्डर में इसका उपयोग निम्नलिखित के साथ कर सकें।

~$ mv ftxdumperfuser /usr/local/bin/

4
+1 महान टिप! यहाँ Ascenders और Descenders typophile.com/node/13081 के
tidwall

35
OTF फ़ाइलों के लिए समान रूप से अच्छी तरह से काम किया।
दोपहर

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

5
मैंने पाया है कि iOS 7 बीटा 6 में, उन्होंने फ़ॉन्ट संरेखण मुद्दा तय किया है। तो अगर आप यह ठीक करते हैं, तो यह iOS 6 में अच्छा होगा, लेकिन iOS 7 में टूट गया .... 7 अभी भी बीटा में है, इसलिए कौन जानता है
tybro0103

3
फ़ॉन्ट उपकरण Xcode 9 के लिए अद्यतन किए गए हैं, वे उच्च सिएरा पर ठीक स्थापित करते हैं। सीधा लिंक: developer.apple.com/download/more/?=font
Andrés Pizá Bückmann

49

मैंने शीर्ष सामग्री को समायोजित करने की समस्या को हल किया (शीर्षक नहीं!) इनसेट।

उदाहरण के लिए: button.contentEdgeInsets = UIEdgeInsetsMake (10.0, 0.0, 0.0, 0.0);

सौभाग्य!


15
यह मेरे लिए एक अच्छा त्वरित समाधान था जो फ़ॉन्ट को संपादित करने की कोशिश करने की तुलना में सरल लग रहा था। myButton.titleLabel.font = [UIFont fontWithName: @ "FontName" आकार: 20.0]; myButton.contentEdgeInsets = UIEdgeInsetsMake (3.0, 0.0, 0.0, 0.0);
जेमी हैमिक

प्रतिभाशाली! धन्यवाद! मेरी समस्या थोड़ी अलग थी, मेरे पास डिफ़ॉल्ट फ़ॉन्ट का उपयोग करते हुए सरल + और - बटन थे और वे केंद्रित से कम दिखाई दे रहे थे, मैं पाठ को थोड़ा ऊपर उठाने के लिए यहां समाधान का उपयोग करने में सक्षम था, इसलिए यह बंद नहीं दिखता था।
पैट्रिक टी नेल्सन

7

सुनिश्चित नहीं है कि यह मदद करेगा क्योंकि यह आपके फ़ॉन्ट पर निर्भर हो सकता है, लेकिन यह हो सकता है कि आपका आधार रेखा गलत है।

self.searchButton.titleLabel.baselineAdjustment = 
    UIBaselineAdjustmentAlignCenters;

3
एक UIButton के लिए एक टाइटल लैबेल पर बढ़िया काम करता है जब फ़ॉन्ट आकार को न्यूनतम मापक के साथ समायोजित किया जा रहा है
smitt04

6

मुझे लगता है कि यह सबसे अच्छा जवाब है। एस्केंडर, नंबरऑफहेट्रिक्स आदि के साथ कोई खेल नहीं ... बस ग्लिफ़ एप्लिकेशन और जॉब द्वारा आयात-निर्यात किया गया। इस उत्तर के लिए धन्यवाद: https://stackoverflow.com/a/16798036/1207684


आपने मेरा दिन बचाया है!
एलेस्क ओस्कर कोकुर

मेरा भि! धन्यवाद महोदय।
जुआन सगस्ती

2

आप इसे इंटरफ़ेस बिल्डर में आज़मा सकते हैं। यहाँ कैसे करना है की एक स्नैपशॉट है -

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

जैसा कि आप देख सकते हैं कि आईबी में ऐसा करने के अपने स्वयं के लाभ हैं।


1
वह सेटिंग पहले से ही है, और IB में फ़ॉन्ट लंबवत दिखाता है, लेकिन डिफ़ॉल्ट फ़ॉन्ट के रूप में दिखाता है। यह केवल तभी होता है जब मैं अपना ऐप चलाता हूं जो मेरा कस्टम फ़ॉन्ट चेहरा दिखाता है, और यह लंबवत केंद्रित नहीं है
पीट

क्या आप अपना "कस्टम फ़ॉन्ट" आईबी में सेट करते हैं? क्या यह iOS फोंट में समर्थित है?
श्रीकर अप्पलाराजु

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

2

पार्टी के लिए देर से, लेकिन इस मुद्दे ने मुझे नौवीं बार मारा, मैंने सोचा कि मैंने सबसे सरल समाधान पोस्ट किया है: पायथन फॉन्टटूल का उपयोग करना

  1. यदि यह आपके सिस्टम पर उपलब्ध नहीं है तो पायथन 3 स्थापित करें।

  2. FontTools स्थापित करें

    pip3 install fonttools

    FontTools में एक टीटीएक्स टूल शामिल है जो एक्सएमएल से और इससे रूपांतरण को सक्षम करता है।

  3. एक ही फ़ोल्डर में अपने फ़ॉन्ट .ttx में कनवर्ट करें

    ttx myFontFile.otf

  4. .Ttx के लिए आवश्यक संपादन करें और .otf फ़ाइल को हटा दें क्योंकि इसे अगले चरण में बदल दिया जाएगा।

  5. फ़ाइल को .otf में कनवर्ट करें

    ttx myFontFile.ttx


प्रेरणा: kolyuchi द्वारा समाधान अधूरा है, और यहां तक कि साथ इस विस्तारित इंस्टॉलेशन प्रवाह , चल ftxdumperfuser10.15.2 कैटालिना पर एक त्रुटि हुई।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.