2013-06-03 27 views
8

Tôi có một ứng dụng, sử dụng Bảng phân cảnh để hiển thị hai màn hình. Cái đầu tiên là một danh sách (được gọi là "Lista"), và cái thứ hai là một bản đồ ("Térkép"). Mỗi chế độ xem có nút điều hướng bên trái và bên phải. Nhấn nút bên phải sẽ đẩy chế độ xem bản đồ đến Trình điều khiển Điều hướng. Nút quay lại được ẩn theo cách thủ công từ phương thức viewDidLoad của bản đồ.Kích thước UIBarButtonItem khác nhau

List view Map view

Câu hỏi đặt ra là, tại sao các mặt hàng nút thanh có kích thước khác nhau trên mỗi màn hình? Làm thế nào tôi có thể kiểm soát kích thước của các nút?

Hình ảnh trên các nút có cùng kích thước. Skinning được thực hiện trong AppDelegate thông qua các thiết lập xuất hiện:

// navbar background 
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"bg-titlebar.png"] 
            forBarMetrics:UIBarMetricsDefault]; 

// navbar button background 
[[UIBarButtonItem appearance] setBackgroundImage:[[UIImage imageNamed:@"btn-main.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(4.0, 4.0, 4.0, 4.0) resizingMode:UIImageResizingModeStretch] 
             forState:UIControlStateNormal 
             barMetrics:UIBarMetricsDefault]; 
[[UIBarButtonItem appearance] setBackgroundImage:[[UIImage imageNamed:@"btn-main-active.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(4.0, 4.0, 4.0, 4.0) resizingMode:UIImageResizingModeStretch] 
             forState:UIControlStateHighlighted 
             barMetrics:UIBarMetricsDefault]; 

// back button background 
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[[UIImage imageNamed:@"btn-back.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(4.0, 12.0, 4.0, 4.0) resizingMode:UIImageResizingModeStretch] 
                forState:UIControlStateNormal 
               barMetrics:UIBarMetricsDefault]; 
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[[UIImage imageNamed:@"btn-back-active.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(4.0, 12.0, 4.0, 4.0) resizingMode:UIImageResizingModeStretch] 
                forState:UIControlStateHighlighted 
               barMetrics:UIBarMetricsDefault]; 
+0

trong trường hợp của tôi công thức này luôn làm việc cho tôi. Có thể bạn đang đưa ra giới hạn cho nút thanh của bạn một cách riêng biệt hoặc có một số vấn đề định hướng. –

+0

Các câu hỏi có hình ảnh luôn được đánh giá cao :) – Anupdas

+0

Thử đặt các nút trong chế độ xemWillAppear nếu bạn hiện đang sử dụng viewDidLoad –

Trả lời

1

Bạn có thể nhận được hai UIBarButtonsItem giống hệt nhau bằng cách tạo ra nó trong một segue và sau đó sao chép-dán nút trong segue khác (ít nhất này đang làm việc trong trường hợp của tôi, nhưng tôi thiên đường đã không thể xác định nguyên nhân gốc rễ của vấn đề cho đến nay).

Nếu tạo trực tiếp UIBarButtonItem không hoạt động, hãy thả UIButton trong NavigationItem và nó sẽ tự động tạo UIBarButtonItem với một UIButton bên trong (xem hình bên dưới). Bằng cách này, bạn có thể cấu hình một hình ảnh hoặc các thuộc tính khác không có trong một UIBarButtonItem. Một khi bạn đang hài lòng với sự xuất hiện của UIButton của bạn (nhúng trong Bar Button), sao chép dán nó vào một segue khác nhau và họ nên giữ cùng kích thước.

UIBarButtonItem vs UIButton inside UIBarButtonItem

+0

Tôi đã thử rằng, tiếc là không giúp: ( – gklka

+0

Và bạn đã thử, thay vì thả và UIBarButtonItem và thiết lập hình ảnh thông qua proxy xuất hiện, để thả một UIButton và thiết lập hình ảnh trực tiếp? Tôi biết là không thuận tiện, nhưng tôi hy vọng nó có thể giải quyết vấn đề của bạn. – jmg

+0

tôi tin UIButtons rơi vào UINavitaionBars trở thành UIBarButtonItems tự động. tôi cũng đã cố gắng tạo ra UIBarButtonItems từ mã, nhưng kết quả là giống hệt nhau. – gklka