2011-08-05 42 views
8

Làm cách nào để thay đổi kích thước một UIBarButtonItem trong mã? Cảm ơn bạn đã giúp đỡ!Cách thay đổi kích cỡ UIBarButtonItem trong mã

+0

bạn đang tạo loại mục thanh gì? biểu tượng hệ thống hoặc văn bản? –

+0

Tại sao bạn không loại bỏ nó và phân bổ một barbuttonitem mới với kích thước khung hình mới? – Legolas

+0

Đây là mục nút thanh không gian cố định. Tôi sẽ cố gắng làm những gì Legolas đề nghị, nhưng tôi chỉ muốn cố gắng thay đổi kích thước hiện tại bằng cách sử dụng một cái gì đó tương tự như barButton.something (contentSize?) = CGRect? (Chiều rộng, chiều cao). Cảm ơn! –

Trả lời

15

Bạn không thể thay đổi kích thước UIBarButtonItem như bạn sẽ là UIView. Những gì bạn có thể làm là thay đổi thuộc tính chiều rộng của nó.

UIBarButtonItem *b; 
// Initialize and such ... 
b.width = 150.0; 

Điều này sẽ hoạt động đối với Mục nút thanh không gian cố định.

+0

Lưu ý về điều này: I cũng phải làm [thanh công cụ setNeedsLayout] hoặc không có gì xảy ra khi tôi thực hiện điều này trong mã, nơi ngăn kéo xuất hiện ở phía bên che khuất các nút khác. – Kalle

+1

Tại sao tôi không thể làm điều này trong xib? –

+2

"nên hoạt động"? Bạn đã chắc chắn làm điều này vì nó không làm việc cho tôi. –

1

Sử dụng tài sản chiều rộng của UIBarButtonItem để thay đổi kích thước nút để phù hợp bằng cách thiết lập nó để 0.

UIBarButtonItem* btn = // init 
btn.width = .0f; 

Từ tài liệu của Apple: "Nếu giá trị là 0.0 hay tiêu cực, mục thiết lập chiều rộng của kết hợp hình ảnh và tiêu đề để vừa với " https://developer.apple.com/library/ios/documentation/uikit/reference/UIBarButtonItem_Class/Reference/Reference.html#//apple_ref/occ/instp/UIBarButtonItem/width

3

Nếu bạn muốn sử dụng một số hình ảnh tùy chỉnh trong UIBarButtonItem, bạn có thể sử dụng mã này.

DoneButton = [[UIBarButtonItem alloc] initWithTitle:[Settings getConfigurableLabel:GENERAL_DONE] style:UIBarButtonItemStyleBordered target:self action:@selector(btnWorkOrderDoneClicked)]; 
UIButton *cameraButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 20.0f, 20.0f)]; 
UIImage *cameraImage = [UIImage imageNamed:@"cameraicon_white.png"]; 
[cameraButton setBackgroundImage:cameraImage forState:UIControlStateNormal]; 
[cameraButton addTarget:self action:@selector(openCamera) forControlEvents:UIControlEventTouchUpInside]; 
    UIBarButtonItem* cameraButtonItem = [[UIBarButtonItem alloc] initWithCustomView:cameraButton]; 
Các vấn đề liên quan