2013-01-24 118 views
5

आप देखते हैं कि मैं पूरी तरह से कस्टम नेविगेशन बार बना रहा हूं और जब मैं बैक बटन बनाता हूं तो यह सही जगह पर नहीं रहता है क्योंकि आप कोड के नीचे देख सकते हैं।मैं आईओएस पर बैक बटन का स्थान कैसे बदलूं?

यहाँ एप्लिकेशन

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    if(self.navigationController.viewControllers.count > 1) { 
    UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom]; 

    [backButton setTitle:@"" forState:UIControlStateNormal]; 
    [backButton setBackgroundImage:[UIImage imageNamed:@"backButton.png"] forState:UIControlStateNormal]; 
    [backButton addTarget:self action:@selector(didTapBackButton:) forControlEvents:UIControlEventTouchUpInside]; 
    backButton.frame = CGRectMake(0.0f, 0.0f, 44.0f, 45.0f); 
    UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton]; 

    self.navigationItem.leftBarButtonItem = backButtonItem; 
} 

}

Pic http://s8.postimage.org/k5faqz0jp/Screen_Shot_2013_01_24_at_5_30_10_PM.png

उत्तर

6

मुझे लगता है कि आप बटन की स्थिति बनाने के लिए सामग्री EdgeInsets को संशोधित कर सकते हैं।

कुछ इस तरह:

[backButton setContentEdgeInsets: UIEdgeInsetsMake (5, 0, -5, 0)];

UIButton Class Reference

contentEdgeInsets

इनसेट या बटन की सामग्री के सभी आसपास के आयत के लिए शुरू हाशिये से आओ।

@property (nonatomic) UIEdgeInsets contentEdgeInsets

DiscussionUse इस संपत्ति का आकार बदलने और बटन सामग्री के लिए प्रभावी ड्राइंग आयत का स्थान। सामग्री में बटन छवि और बटन शीर्षक शामिल है। आप चार चार इन्सेट्स (शीर्ष, बाएं, नीचे, दाएं) के लिए एक अलग मान निर्दिष्ट कर सकते हैं। एक सकारात्मक मूल्य घटता है, या इन्सेट, जो किनारे को बटन के केंद्र के करीब ले जाता है। एक नकारात्मक मूल्य फैलता है, या किनारे, उस किनारे। इस संपत्ति के लिए मूल्य बनाने के लिए UIEdgeInsetsMake फ़ंक्शन का उपयोग करें। डिफ़ॉल्ट मान UIEdgeInsetsZero है।

+0

आपके उत्तर के लिए धन्यवाद! – Prad

0

वैसे आप बदल नहीं सकते, तो आप इसे छिपाने के लिए है के लिए मेरे कोड है। इस पेज पर

देखो यहां पोस्ट:

http://rafaelsteil.com/2011/07/23/crappy-ios-apis-uinavigationcontroller/

Can't change back button title but I can hide it

+0

हालांकि यह तकनीकी रूप से सवाल का जवाब कर सकते हैं, [यह बेहतर होगा] (http://meta.stackexchange.com/q/8259) तुम यहाँ जुड़ा हुआ सामग्री संक्षेप में प्रस्तुत करने के लिए। अन्यथा, लिंक को सड़ांध के कारण इसकी उपयोगिता खोने का खतरा है। –

+0

नहीं, मुझे पता है कि बैक बटन के शीर्षक को कैसे हटाया जाए, बस स्थान बदलें। क्या यह एक cgrect – Prad

0

आप पहली बार NavigationBar को छिपाने के लिए की आवश्यकता है ...

[self.navigationController setNavigationBarHidden:YES animated:NO]; 

फिर कस्टम UIButton बनाने ..

UIButton *btn1=[UIButton buttonWithType:UIButtonTypeCustom]; 
    [btn1 setFrame:CGRectMake(10, 0, 60, 40)];// Frame u want 

    [btn1 setImage:[UIImage imageNamed:@"[email protected]"] forState:UIControlStateNormal]; 
    [btn1 addTarget:self action:@selector(Click_backward:) forControlEvents: UIControlEventTouchUpInside]; 
btn1.tintColor=[UIColor purpleColor]; 
    [self.view addSubview:btn1]; 
+0

के साथ संभव है हाय दोस्त मैंने सरणी का उपयोग करके चार नेविगेशन बटन जोड़े हैं .. यह ठीक काम कर रहा है लेकिन बैक इंडिकेटर बटन hidded.how इसे सुधारने के लिए। – vijay

2

आप बाईं ओर कुछ रिक्ति के साथ एक बड़ी छवि प्रस्तुत कर सकते हैं।

UIImage *origImage = [UIImage imageNamed:@"button-thin-hamburger.png"]; 
UIGraphicsBeginImageContextWithOptions(CGSizeMake(origImage.size.width + 10, origImage.size.height), NO, 0.0); 
[origImage drawInRect:CGRectMake(10, 0, origImage.size.width, origImage.size.height)]; 
UIImage *buttonImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"" 
                   style:UIBarButtonItemStylePlain 
                   target:nil 
                   action:nil]; 
self.navigationItem.backBarButtonItem = backButton; 

[[UINavigationBar appearance] setBackIndicatorImage:buttonImage]; 
[[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:buttonImage];