2013-01-24 18 views
5

Bạn thấy tôi đang tạo thanh điều hướng hoàn toàn tùy chỉnh và khi tôi tạo nút quay lại, nó không ở đúng vị trí như bạn có thể thấy bên dưới mã.Làm cách nào để thay đổi vị trí của nút quay lại trên iOS?

đây là mã của tôi cho các ứng dụng

- (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

Trả lời

6

Tôi nghĩ rằng bạn chỉ có thể sửa đổi contentEdgeInsets để làm cho vị trí của nút.

Something như thế này:

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

Đến từ UIButton Class Reference

contentEdgeInsets

Hình nhỏ hoặc lợi nhuận đầu cho hình chữ nhật xung quanh tất cả các nội dung của nút.

@property (nonatomic) UIEdgeInsets contentEdgeInsets

DiscussionUse khách sạn này để thay đổi kích thước và định vị lại hình chữ nhật vẽ hiệu quả đối với các nội dung nút. Nội dung bao gồm hình ảnh nút và tiêu đề nút. Bạn có thể chỉ định một giá trị khác nhau cho mỗi trong số bốn insets (trên cùng, bên trái, dưới, bên phải). Một giá trị tích cực co lại, hoặc insets, cạnh đó - di chuyển nó gần với trung tâm của nút. Giá trị âm mở rộng, hoặc đầu ra, cạnh đó. Sử dụng hàm UIEdgeInsetsMake để xây dựng một giá trị cho thuộc tính này. Giá trị mặc định là UIEdgeInsetsZero.

+0

Cảm ơn bạn đã trả lời! – Prad

0

Vâng, bạn không thể thay đổi, bạn phải giấu nó.

Nhìn vào trang này được đăng ở đây:

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

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

+0

Mặc dù điều này có thể trả lời câu hỏi một cách kỹ thuật, bạn có thể tóm tắt tài liệu được liên kết tại đây. Nếu không, câu trả lời có nguy cơ mất tính hữu ích của nó do thối liên kết. –

+0

Tôi không biết cách xóa tiêu đề của nút quay lại chỉ cần thay đổi vị trí. Có thể với một cgrect – Prad

0

bạn cần phải giấu Navigationbar đầu tiên ...

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

sau đó tạo Custom 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

Hi người bạn tôi đã thêm bốn nút điều hướng bằng cách sử dụng mảng .. làm việc tốt nhưng lại chỉ số nút hidded.how để khắc phục điều này. – vijay

2

Bạn có thể hiển thị hình ảnh lớn hơn với khoảng cách ở bên trái.

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];