2011-05-13 16 views
23

मेरे पास कस्टम कस्टम दृश्य दृश्य के अंदर एक कस्टम बनाया गया UINavigationBar (विभिन्न आकार, पृष्ठभूमि आदि) है।UINavigationBar कस्टम शीर्षक स्थिति

UIView * mainView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight)]; 
    mainView.backgroundColor = [UIColor yellowColor]; 

    UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0,0,kScreenWidth,80)]; 
    navBar.autoresizingMask = UIViewAutoresizingFlexibleWidth; 

    UINavigationItem *currentItem = [[UINavigationItem alloc] init]; 
    UILabel *label = [[UILabel alloc] init]; 
    label.font = [UIFont fontWithName:@"Helvetica-Bold" size: 30.0]; 
    [label setBackgroundColor:[UIColor clearColor]]; 
    [label setTextColor:[UIColor whiteColor]]; 
    [label setText:self.title]; 
    [label sizeToFit]; 
    [currentItem setTitleView:label]; 
    [label release]; 

    [navBar pushNavigationItem:currentItem animated:NO]; 
    [currentItem release]; 

    [mainView addSubview:navBar]; 
    [navBar release];  

    self.view = mainView; 
[mainView release]; 

हालांकि, मेरी समस्या अब है कि, भले ही कस्टम शीर्षक दृश्य सही ढंग से जोड़ा जाता है, यह खड़ी NavBar साथ केंद्रित नहीं कर रहा है: मैं इस लक्ष्य को हासिल करने के लिए इस कोड का इस्तेमाल किया। मुझे क्या याद आ रहा है

धन्यवाद!

+7

... ** ** नहीं है मुश्किल कोड के प्यार के लिए स्क्रीन आकार, ऐप्पल ने इसके बारे में सुसमाचार दिया है क्योंकि आईफोन एसडीके को पहली बार रिलीज़ किया गया था। '[यूआईस्क्रीन मुख्यस्क्रीन]। एप्प्लिकेशन फ्रेम 'का प्रयोग करें, और यह आईफोन/आईपैड, या किसी भी भविष्य के डिवाइस पर काम करेगा। जब कॉल, या टेदरिंग में बड़ी स्थिति पट्टी के साथ और बिना। – PeyloW

+0

धन्यवाद पेलोव, अब इसे ध्यान में रखेगा! –

+0

यूआईस्क्रीन के फ्रेम का उपयोग न करें, जब आपका ऐप आईओएस 9 पर विभाजित स्क्रीन मोड में होता है तो यह आपको गलत आकार देगा। इसके बजाए विंडो के फ्रेम का उपयोग करें। –

उत्तर

97

आप IOS 5 में setTitleVerticalPositionAdjustment:forBarMetrics: उपयोग कर सकते हैं शीर्षक स्थिति बदलने के लिए, यह सामान्य शीर्षक जैसे पर काम करता है:

CGFloat verticalOffset = -4; 
[[UINavigationBar appearance] setTitleVerticalPositionAdjustment:verticalOffset forBarMetrics:UIBarMetricsDefault]; 
+8

यह सही उत्तर है –

+1

@ वेलेंटीनो: आपको इसे सही उत्तर के रूप में स्वीकार करना होगा। – Armin

+0

दुर्भाग्य से कभी-कभी केंद्र को क्षैतिज रूप से एक शीर्षक को ऑफसेट करने की आवश्यकता होती है ताकि वह सही दिख सके। उदाहरण के लिए UINavigationBar में, आपके पास एक बटन हो सकता है जो बाईं ओर "रद्द करें" कहता है, और दाईं ओर "संपन्न" होता है। हालांकि शीर्षक बार में केंद्रित है, यह बटन के बीच केंद्रित नहीं है और सही नहीं दिखता है। तो UINavigationBarItem.titleView के साथ काम करना कुछ मामलों में जाने का तरीका हो सकता है। – clearlight

0

आपने 80 अंक की ऊंचाई के साथ UINavigationBar बनाया है, जब एक मानक UINavigationBar में 44 अंक हैं। यह शायद इसे 44 पीटीएस आधारित केंद्र पर केंद्रित करता है ...

आप 80 अंक की ऊंचाई के साथ UIView बनाने की कोशिश कर सकते हैं और UILabel इसके अंदर केंद्रित कर सकते हैं। (परीक्षण नहीं, बस एक अनुमान)

+0

मुझे एक ही भावना थी, लेकिन मैंने 'यूनाविगेशनबार' को भी बड़ा बना दिया और फिर भी शीर्षक ने अपनी स्थिति ('यूआईएनविगेशनबार' की निचली पंक्ति से ऊपर कई अंक) रखा। असल में, कोई फर्क नहीं पड़ता कि 'यूनाविगेशनबार' कितना बड़ा है, शीर्षक इसके नीचे की रेखा से ऊपर कई अंक होगा। UIView चीज़ को तुरंत आज़माएं और वापस रिपोर्ट करें। –

+0

एक बड़ा UIView काम जोड़ना (यदि मैं इसे 'UINavigationBar' के समान आकार सेट करता हूं) धन्यवाद। –

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