2010-10-01 74 views
6

Có một cái nhìn tại các đoạn ảnh chụp màn hình sau đây từ một ứng dụng iPad Tôi đang làm việc trên:Biểu tượng trên thanh công cụ của iPad: hình ảnh nút thanh không ở giữa?

ipad toolbar button images

Các "bong bóng trò chuyện" biểu tượng bên trái là từ nổi tiếng Glyphish icon set. Lưu ý cách nó có vị trí thẳng đứng chính xác (ở giữa), nhưng tối hơn nhiều so với màu xám được sử dụng cho nút InfoDark. Mã để tạo biểu tượng này như sau:

UIImage* image = [UIImage imageNamed:@"02-chat.png"]; 
CGRect frame = CGRectMake(0, 0, image.size.width, image.size.height); 
UIButton* button = [[UIButton alloc] initWithFrame:frame]; 
[button setBackgroundImage:image forState:UIControlStateNormal]; 
[button addTarget:nil action:NULL forControlEvents:UIControlEventTouchUpInside]; 
[button setShowsTouchWhenHighlighted:YES]; 
UIBarButtonItem* chatBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 

Biểu tượng "bong bóng trò chuyện" ở giữa được tạo bằng cùng một hình ảnh, sử dụng mã khác. Lưu ý làm thế nào nó có đúng màu/minh bạch, nhưng có sai vị trí thẳng đứng (quá cao) .:

UIImage* image = [UIImage imageNamed:@"02-chat.png"]; 
UIBarButtonItem* chatBarButtonItem = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:nil action:NULL]; 

Làm thế nào để có được một nút UIBarButtonItem có cả màu đúng/minh bạch (vì vậy tôi không cần phải làm theo cách thủ công), cũng như định vị dọc chính xác?

Có phải một hoặc một lỗi khác, trong mã của tôi hoặc với Apple không? Hoặc cả hai? Hay không (nghĩa là "được thiết kế")?

Edit: Responses to câu trả lời

Dường như phiên bản đầu tiên là bằng cách sử dụng hình ảnh như một chiếc mặt nạ, chứ không phải là như một hình ảnh thông thường.

Có vẻ như vậy, nhưng không phải như vậy. Nếu tôi thay thế hình ảnh bằng hình ảnh được làm bằng tay bởi một người bạn với Photoshop, và sử dụng UIButton, vị trí và màu sắc là chính xác. Tôi chỉ cố gắng tìm ra xung quanh bước thủ công đó.

Hãy ghi nhớ rằng việc đưa UIResponder đối tượng (ví dụ UIButton) bên trong một UIBarButtonItem cho không thể đoán trước kết quả, và tôi đã tìm thấy nó tốt nhất để tránh nó.

Bạn có nguồn không? (Đặc biệt là một liên kết của Apple?) Không bao giờ nghe thấy điều đó.

Thiết kế lại hình ảnh của riêng bạn. Đó là cách tốt nhất và duy nhất để đảm bảo định kích thước, độ dốc và vị trí của tất cả các biểu tượng trên thanh công cụ của bạn.

Tôi không nhất thiết không đồng ý. Tuy nhiên, đây là bước thủ công mà tôi muốn loại bỏ. Nó sẽ có thể để có được những hành vi tôi mong muốn mà không cần chỉnh sửa. (Đặc biệt là kể từ khi tôi nhận được cả hai nửa hành vi mong muốn bằng cách sử dụng các khung công tác hiện có. Chỉ cần không cùng một lúc)

Tốt nhất cho thanh công cụ là 25x25 và 50x50 @ 2x. Đôi khi bạn có thể cần phải đi đến số thấp nhất là 23.

Đây có phải là điều chính thức từ Apple không? Có lẽ từ HIG? Bạn có thể cung cấp một nguồn không?

Bạn có thể thử đặt imageInsets trên để đẩy nó xuống.

Đây cũng là quy trình thủ công không cần thiết. Phần tồi tệ nhất là điều này cần phải được điều chỉnh bằng tay cho mỗi hình ảnh, và nếu một hình ảnh thay đổi theo bất kỳ cách nào, nó phải được kiểm tra lại. Làm việc quá nhiều. Tôi muốn chỉ cần đặt nó vào một hình ảnh và để cho khuôn khổ cơ bản làm việc ra làm thế nào để trung tâm hình ảnh.

Trả lời

0

Bạn có thể thử đặt imageInsets trên đó để đẩy nó xuống.

Chỉ cần tạo ra nó như giữa một và thiết lập như thế này:

chatBarButtonItem.imageInsets = UIEdgeInsetsMake(2.0f, 0.0f, -2.0f, 0.0f); 

tôi sẽ cố gắng và xem xét kỹ hơn một chút sau đó với trường hợp cụ thể này. Tôi không chắc tại sao nó lại làm điều này.

== EDIT ==

Có vẻ như Michael có thể có câu trả lời cho hành vi.

+0

Xem cập nhật cho câu hỏi của tôi. –

1

Có vẻ như phiên bản đầu tiên đang sử dụng hình ảnh làm mặt nạ chứ không phải dưới dạng hình ảnh thông thường. Xin lưu ý rằng việc đặt các đối tượng UIResponder (ví dụ: UIButton) bên trong UIBarButtonItem cho kết quả không thể đoán trước và tôi đã tìm thấy cách tốt nhất để tránh nó.

Đệm trên phiên bản thứ hai có vẻ chỉ là vấn đề về đệm. Vì vậy, bạn có thể thay đổi kích thước của hình ảnh để có thêm nội dung, làm cho đối tượng UIImage có cùng kích thước với các nút khác (24x24px tôi nghĩ?) Hoặc bạn có thể sử dụng the imageInsets property of UIBarItem.

+0

Xem cập nhật cho câu hỏi của tôi. –

0

Thiết kế lại hình ảnh là của riêng bạn. Đó là cách tốt nhất và duy nhất để đảm bảo kích thước, độ dốc và vị trí của tất cả các biểu tượng trên thanh công cụ của bạn. Tốt nhất cho thanh công cụ là 25x25 và 50x50 @ 2x. Đôi khi bạn có thể cần phải xuống thấp nhất là 23.

Điều khác bạn có thể làm là thay đổi cả hình ảnh đầu và cuối bằng 2 pixel để có được kết quả mong muốn. Nếu bạn chỉ thay đổi 1 inset nó sẽ squish hình ảnh.

+0

Xem cập nhật cho câu hỏi của tôi. –

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