2011-06-08 15 views
5

मुझे कस्टम फ़ॉन्ट के साथ UINavigationItem # titleView का उपयोग करने के बारे में कम जानकारी मिल रही है। जब मैंने ऐसा किया है, तो नेविगेशन बार में फ़ॉन्ट को लंबवत रूप से गलत तरीके से गलत तरीके से गलत किया गया है।UINavigationItem # titleVign संरेखण समस्याओं

यह प्रविष्टि आंशिक रूप से एक हैक दस्तावेज करने के लिए है, और यह भी उम्मीद है कि किसी को इस समस्या का संक्षिप्त उत्तर मिलेगा, क्योंकि मुझे लगता है कि मुझे कुछ आसान याद आ रही है।

पहले हैक, मेरे अपने UILabel व्युत्पन्न वर्ग का उपयोग कर:

@interface NavigationItemLabel : UILabel 
- (void)setFrame:(CGRect)frame; 
@end 

@implementation NavigationItemLabel 
- (void)setFrame:(CGRect)frame { 
    // Called by UINavigationBar layoutSubviews. 
    frame.origin.y -= self.font.descender; 
} 
@end 

किसी कारण से, frame.origin.y == -11, कोई बात नहीं क्या फ़ॉन्ट मैं का उपयोग करें। क्या किसी के पास कोई अंतर्ज्ञान है कि यह क्यों है?

मेरे फ़ॉन्ट के अवरोधक (गैब्रिओला नामक कस्टम फ़ॉन्ट) जोड़ना मदद करता है। इस हैक के बिना, पाठ ने नेविगेशन बार के केंद्र में अवरोही के नीचे से गठबंधन किया गया है।

यह सभी फ़ॉन्ट्स के लिए काम नहीं करता है।

क्या किसी के पास बेहतर समाधान है?

धन्यवाद।

- (CGFloat)titleVerticalPositionAdjustmentForBarMetrics:(UIBarMetrics)barMetrics 
Returns the title’s vertical position adjustment for given bar metrics. 

इसके अलावा, आप titleTextAttributes (भी iOS5 +) की जांच करनी चाहिए, तो आप स्थापित करने के लिए उपयोग कर सकते हैं जो:

+0

एक संभावित सुराग संबंधित प्रश्न के बारे में आकार के लिए आकार का उपयोग करने के लिए Sjors Provoost का सुझाव है: [link] (http://stackoverflow.com/questions/3125245/uinavigationitem-titleview-position) – Wienke

उत्तर

3

आप iOS 5+ करने की तैनाती कर रहे हैं, तो आप बाहर titleVerticalPositionAdjustmentForBarMetrics संपत्ति UINavigationBar documentation में जांच कर सकता है एक कस्टम फ़ॉन्ट:

NSDictionary *attributes = @{ 
    UITextAttributeFont: yourFont 
}; 
[navBar setTitleTextAttributes:attributes]; 

आप कर रहे हैं नहीं iOS5 पर हैं, तो मैं एक UIView अंदर UILabel लपेटकर का सुझाव देते हैं और आप की स्थापना इसके बजाय titleView के रूप में UIView (यह आपको frame को बदलकर लपेटकर लेबल की स्थिति को और समायोजित करने की अनुमति देता है)।

यदि आपके पास डब्ल्यूडब्ल्यूडीसी 2012 वीडियो तक पहुंच है (यानी यदि आपके पास डेवलपर खाता है), तो मैं Advanced Appearance Customization on iOS पर इस बात को देखने की दृढ़ता से अनुशंसा करता हूं (यह सामान वहां शामिल है)।

उम्मीद है कि यह किसी भी तरह से मदद करता है।

0

मुझे Grotesque का उपयोग कर एक ही समस्या थी और @kolyuchiy here द्वारा दिखाया गया एक अच्छा SO समाधान था। (इसमें Apple Font Tool Suite कमांड लाइन उपयोगिताओं को डाउनलोड करना और ascender आपके कस्टम फ़ॉन्ट के लिए विशेषता को समायोजित करना शामिल है)।