2011-05-29 22 views
10

मैं कस्टम नेविगेशन बार के साथ एक ऐप बना रहा हूं। कुछ शोध के बाद मैंने UINavigationBar पर एक श्रेणी का उपयोग करके ऐसा करने का फैसला किया। एक ड्रॉप छाया को समायोजित करने के लिए नेविगेशन बार सामान्य से थोड़ा बड़ा होना चाहिए।आईओएस: कस्टम नेविगेशन बार के भीतर पोजिशनिंग नेविगेशन बार बटन

#import "UINavigationBar+CustomWithShadow.h" 

@implementation UINavigationBar (CustomWithShadow) 

- (void)drawRect:(CGRect)rect { 

    // Change the tint color in order to change color of buttons 
    UIColor *color = [UIColor colorWithHue:0.0 saturation:0.0 brightness:0.0 alpha:0.0]; 
    self.tintColor = color; 

    // Add a custom background image to the navigation bar 
    UIImage *image = [UIImage imageNamed:@"NavBar.png"]; 
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, 60)]; 
} 

- (void)layoutSubviews { 

    self.frame = CGRectMake(0, 20, self.frame.size.width, 60); 
} 
@end 

केवल समस्या अब बड़े नेविगेशन पट्टी का अर्थ है कि नेविगेशन पट्टी बटन अंत बहुत दूर नीचे, इसलिए की तरह है:: यहाँ कोड है

enter image description here

किसी को भी पता है कि कैसे मैं बटन की स्थिति को सही कर सकता हूं?

सभी मदद के लिए धन्यवाद!

अद्यतन:

मैं तो जैसे दृश्य नियंत्रक के init विधि में नेविगेशन बार बटन जोड़ने:

// Create "Add" button for the nav bar 
UIBarButtonItem *addButton = [[UIBarButtonItem alloc] 
    initWithBarButtonSystemItem:UIBarButtonSystemItemAdd 
    target:self 
    action:@selector(createNewEntry:)]; 
[[self navigationItem] setRightBarButtonItem:addButton]; 
[addButton release]; 
+0

आप बार में 'UIBarButtonItem' कैसे जोड़ते हैं? और कहाँ? मैंने एक छोटा परीक्षण किया जिसमें मैं एनआईबी के माध्यम से बीटीएन जोड़ता हूं और सबकुछ ठीक लगता है। –

+0

मैं उन्हें [[[स्वयं नेविगेशन इटैम] setRightBarButtonItem: addButton] का उपयोग करके दृश्य नियंत्रक की init विधि में जोड़ता हूं; उदाहरण के लिए। मैं एनआईबी के माध्यम से बटन कैसे जोड़ सकता हूं? –

उत्तर

3

आप कस्टम के रूप में leftBarButtonItem और rightBarButtonItem जोड़ने की आवश्यकता होगी वस्तुओं और गड़बड़ी के साथ गड़बड़ .... उदाहरण के लिए:

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0,5,buttonImage.size.width,buttonImage.size.height)]; 
[button setBackgroundImage:buttonImage forState:UIControlStateNormal]; 
[button addTarget:delegate action:@selector(barButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
[button setTitle:titleString forState:UIControlStateNormal]; 
[button setTitleColor:CUSTOM_BAR_BUTTON_TITLE_COLOR forState:UIControlStateNormal]; 
[[button titleLabel] setFont:[UIFont boldSystemFontOfSize:14]]; 
[[button titleLabel] setShadowColor:CUSTOM_BAR_BUTTON_SHADOW_COLOR]; 
[[button titleLabel] setShadowOffset:CGSizeMake(0,-1)]; 

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:button]; 
[button release]; 

[[self navigationItem] setRightBarButtonItem:barButton]; 
[barButton release]; 
+0

क्या कोई आसान तरीका है? मुझे बाद के विचारों पर बटन मिल गए हैं और यदि संभव हो तो उनमें से प्रत्येक को एक कस्टम आइटम के रूप में जोड़ने से बचना चाहते हैं। यदि आपके पास कोई है तो नेविगेशन बार में ड्रॉप छाया को जोड़ने के तरीकों के सुझाव देने के लिए स्वतंत्र महसूस करें :) –

+0

@Erik आपको ऐसे ऑफसेट को ठीक करने के लिए वास्तविक बटन को एक सबव्यूव के रूप में ले जाने के लिए कस्टम व्यू-बार-बटन-आइटम का उपयोग करना होगा मुद्दे। – Till

+0

सभी नेविगेशन बटन पर इसे प्राप्त करने का एक आसान तरीका UINavigationBarButton का उप-वर्ग या श्रेणी बनाना होगा। – adam

0

में नेविगेशन बार में बटन जोड़ने का प्रयास करें इसके बजाय दृश्य नियंत्रक केविधि।

+0

कोई बदलाव नहीं मैं डरता हूँ। बटन नेविगेशन बार के नीचे स्वयं को संरेखित करना जारी रखा जाता है (जो ड्रॉप छाया के अंत तक नीचे जाता है)। –

0

मेरा समाधान, सर्वोत्तम नहीं है, लेकिन यह मेरे लिए ठीक काम करता है। मेरी कस्टम नेविगेशन बार की ऊंचाई 55 है (डिफ़ॉल्ट ऊंचाई 44 है)। मैं अपनी कस्टम नेविगेशन बार से केवल 44 ऊंचाई तक काटता हूं और इसे नेविगेशन बार में डालता हूं। फिर मैंने अपने कस्टम नेविगेशन बार (छाया आदि) के अगले भाग को काट दिया और इसे नेविगेशन बार के नीचे छवि दृश्य के रूप में डाला। और बस। बटन सही जगह पर हैं ...