2012-05-23 41 views
5

Sử dụng UIBarbuttonItem, initWithImage Tôi nhận được một hình ảnh mà tôi muốn nhỏ hơn.Cách thay đổi kích thước hình ảnh UIBarButtonItem

Tôi cảm thấy như hoàn toàn không có cách nào để thay đổi kích thước hình ảnh.

UIedgeInsetMake không hoạt động chút nào. Thay đổi kích thước picutre không hoạt động hoặc (pixelate). Tôi có biểu tượng @ 2x 48x48 và 24x24 bình thường. việc tạo một hình ảnh mới với đường viền trống lớn hơn không hoạt động.

Nếu tôi sử dụng 20x20 nó sẽ pixelate. không có vấn đề gì.

Bất kỳ giải pháp nào? Cảm ơn!

Trả lời

1

Nếu bạn muốn thay đổi kích thước của nút để khớp với hình ảnh, tốt hơn hết là tạo UIButton và thực hiện tùy chỉnh UIBarButtonItem. Trong UIBarButtonItem initWithImageThe hình ảnh được thu nhỏ để phù hợp với UIBarButtonItem.

Xem this anser để biết thêm thông tin về cách thực hiện điều đó.

+0

Cảm ơn bạn đã trả lời của bạn nhưng kích thước nút là tốt, trên thực tế nó hoàn hảo. Đó là hình ảnh được vẽ bên trong tôi muốn nhỏ hơn. –

3

Bạn có thể sử dụng BarbuttonItem tùy chỉnh để thiết lập hình ảnh và điều chỉnh kích thước với kích thước tiêu đề bằng cách sử dụng các phương pháp dưới đây:

+(UIBarButtonItem *)createToolBarButtonItemWithTitle:(NSString *)t target:(id)tgt action:(SEL)a 
{ 
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
// Since the buttons can be any width we use a thin image with a stretchable center point 
UIImage *buttonImage = [[UIImage imageNamed:@"toolbarbutton_button_mouseup.png"] stretchableImageWithLeftCapWidth:5 topCapHeight:0]; 
UIImage *buttonPressedImage = [[UIImage imageNamed:@"toolbarbutton_button_mouseover.png"] stretchableImageWithLeftCapWidth:5 topCapHeight:0]; 
[[button titleLabel] setFont:[UIFont boldSystemFontOfSize:12.0f]]; 
//[[button titleLabel] setFont:[UIFont fontWithName:@"Futura-Medium" size:12.0]]; 
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted]; 
[[button titleLabel] setShadowOffset:CGSizeMake(0.0, 1.0)]; 

CGRect buttonFrame = [button frame]; 
buttonFrame.size.width = [t sizeWithFont:[UIFont boldSystemFontOfSize:12.0]].width + 24.0; 

//Applicable only for iPhone FrameFun 
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone && [[[NSUserDefaults standardUserDefaults] stringForKey:@"is_Landscape"] isEqualToString:@"landscape"]) { 
    buttonFrame.size.height = 23.0; 
}else { 

    buttonFrame.size.height = buttonImage.size.height; 
} 

[button setFrame:buttonFrame]; 

[button setBackgroundImage:buttonImage forState:UIControlStateNormal]; 
[button setBackgroundImage:buttonPressedImage forState:UIControlStateHighlighted]; 

[button setTitle:t forState:UIControlStateNormal]; 

[button addTarget:tgt action:a forControlEvents:UIControlEventTouchUpInside]; 
UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 
return [buttonItem autorelease]; 

} 

Phương pháp này cho phép bạn để làm cho kích thước động nút với hình ảnh mong muốn. Ở đây tôi đã sử dụng stretchableImageWithLeftCapWidth để điều chỉnh hình ảnh. Tôi nghĩ rằng nó sẽ giúp bạn. Bạn có thể sử dụng toàn bộ phương pháp để làm cho Custom BarButton quá.

+0

mã đẹp nhưng nó không phải là những gì tôi đang tìm kiếm. Tôi không muốn "vẽ" một nút tùy chỉnh. Tôi muốn một barbuttonItem cổ điển với một hình ảnh bên trong chỉ là một chút nhỏ hơn so với những gì được vẽ bên trong theo mặc định. –

5

Điều này có thể đạt được bằng cách sau đây,

  1. mở kích thước thanh tra của UIBarbuttonItem
  2. thay đổi các giá trị cho "Bar Item" -> Hình ảnh Inset -> trên/dưới/trái/phải.

Give it a try ...

+0

Điều này làm việc cho tôi một cách hoàn hảo. Đặc biệt, hữu ích cho hình ảnh .PDF –

Các vấn đề liên quan