2015-09-24 6 views

उत्तर

10

मुझे वही त्रुटि मिली जब मैंने फ़ॉन्ट वजन को Semibold पर सिस्टम फ़ॉन्ट के साथ सेट किया। यह वज़न नए सिस्टम फ़ॉन्ट (सैन फ्रांसिस्को) के लिए उपलब्ध है लेकिन पुरानी हेल्वैटिका नियू के लिए नहीं है, इसलिए मुझे लगता है कि उस त्रुटि का मतलब है कि हमें पुराने ओएस पर सही वजन नहीं मिलेगा।

मेरे मामले में हेल्वैटिका नियू, Bold के लिए भी उपलब्ध वजन में फ़ॉन्ट बदलना, मेरे लिए त्रुटि तय कर दी गई है।

+4

ध्यान दें कि यदि आप फ़ॉन्ट-वेट को 'मध्यम' पर सेट करते हैं, जो दोनों फ़ॉन्ट परिवारों में उपलब्ध है, तो त्रुटि बनी रहती है। – Henrik

2

समस्या सिस्टम फ़ॉन्ट वजन बदलने के साथ नहीं है, समस्या यह है कि Xcode के साथ यह ठीक से निपटने वाला नहीं है - विरोधाभासी कथन, मुझे पता है, विवरण के लिए full blog post देखें। तीन परिदृश्य हैं।

पहला - स्पष्ट टाइपोग्राफी महत्वपूर्ण नहीं है, नियमित वजन स्वीकार्य है। फिर मार्को के जवाब से चिपके रहें और स्पष्ट नियमित वजन का उपयोग करें।


दूसरा - स्पष्ट टाइपोग्राफी बेहतर है, लेकिन पुराने सिस्टम पर समझौता किया जा सकता है। यह अभी डिफ़ॉल्ट व्यवहार है, एक्सकोड बस एक चेतावनी दिखाता है और प्री -10.11 लक्ष्यों पर नियमित फ़ॉन्ट का उपयोग करता है। यदि आप अनुकूली लेआउट का उपयोग करते हैं, तो सबकुछ ठीक होना चाहिए। हेवन मैं -,

नोट अपने स्टोरीबोर्ड पहले लक्ष्य के लिए वापस आने सुविधाओं का उपयोग करता है, वे अक्षम हो सकती है, जो समस्या पैदा कर देगा: चेतावनी से छुटकारा पाने के लिए, आप बस उच्च लक्ष्य स्टोरीबोर्ड निरीक्षक में सेट कर सकते हैं अब तक किसी भी तरह से नहीं आया है।


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

import AppKit 

@IBDesignable public class TextField: NSTextField 
{ 
    @IBInspectable public var preferredFontWeight: Int = 0 

    override public func awakeFromNib() { 
     if #available(OSX 10.11, *) { 
      return 
     } 

     guard 
     let weight: Int = self.preferredFontWeight where weight > 0, 
     let font: NSFont = self.font, 
     let name: String = font.familyName, 
     let manager: NSFontManager = NSFontManager.sharedFontManager() else { 
      return 
     } 

     // Full details here – https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSFontManager_Class/#//apple_ref/occ/instm/NSFontManager/convertWeight:ofFont: 
     // 
     // 1 – ultralight 
     // 2 – thin 
     // 3 – light, extralight 
     // 4 – book 
     // 5 – regular, display 
     // 6 – medium 
     // 7 – demi, demibold 
     // 8 – semi, semibold 
     // 9 – bold 
     // 10 – extra, extrabold 
     // 11 – heavy 
     // 12 – black 
     // 13 – ultrablack 
     // 14 – extrablack 

     if let font: NSFont = manager.fontWithFamily(name, traits: manager.traitsOfFont(font), weight: weight, size: font.pointSize) { 
      self.font = font 
     } 
    } 
} 

पीएस बोल्ड वेट शायद काम करता है क्योंकि यह थोड़ा अलग तर्क का उपयोग करता है - boldSystemFontOfSize(_:) है जो ओएस एक्स 10.0 के बाद उपलब्ध है, कई अन्य तरीकों के विपरीत, जो स्टोरीबोर्ड पर निर्भर हो सकता है।

संबंधित मुद्दे