2010-06-30 27 views
13

vừa chuyển sang iOS 4 trên iPhone 3GS của tôi và một số ứng dụng của tôi đã bị hỏng.Tông màu UIToolbar trên iOS 4

Một vấn đề mà tôi gặp phải là tôi có một thanh công cụ UIToolbar với một số nút, được tô màu hồng, hoạt động tốt trên hệ điều hành 3.1.3. Sau khi nâng cấp lên iOS 4, thanh công cụ vẫn được tô màu, nhưng các nút mà nó chứa không còn bị ảnh hưởng bởi tông màu. Thanh công cụ có màu hồng trong khi các nút có màu xanh dương thường xuyên.

Nhìn xung quanh cho nó trên mạng, nhưng không tìm thấy tham chiếu về một điều như vậy.

Bất kỳ ai biết điều gì đã xảy ra trong quá trình này?

Trả lời

23

(phải thẳng thắn ở đây - tôi biết câu trả lời trước khi đăng bài, chỉ không biết cách tải dữ liệu này vào StackOverflow. Tư tưởng giải pháp tôi tìm thấy có giá trị đối với người khác, vì vậy muốn đăng nó ở đây. mới ở đây, vì vậy xin vui lòng không có phê bình khắc nghiệt :))

Vì vậy, cuối cùng vấn đề phát sinh từ, AFAICT, một sự thay đổi trong hành vi trong hệ điều hành.

Như đã trình bày mã màu đã làm việc trước khi nâng cấp và đã được viết như thế này:

// Toolbar content    
NSArray *items=[NSArray arrayWithObjects: ... ]; // PSEUDO CODE HERE 
[toolbar setItems:items]; 

// Add tint 
toolbar.tintColor = [UIColor colorWithRed:0.83 green:0.43 blue:0.57 alpha:0.5]; 

Những gì tôi cần phải làm, chỉ đảo ngược thứ tự của sự vật:

// Add tint 
toolbar.tintColor = [UIColor colorWithRed:0.83 green:0.43 blue:0.57 alpha:0.5]; 

// Toolbar content    
NSArray *items=[NSArray arrayWithObjects: ... ]; // PSEUDO CODE HERE 
[toolbar setItems:items]; 

(Nếu bạn tạo UIToolbar trong Interface Builder, bạn có thể thay đổi màu của nó ở đó, và nó cũng áp dụng cho các nút).

Tôi đoán màu đã cập nhật tất cả các nút trước iOS 4, trong khi iOS 4 không có và khi thêm nút, chúng sẽ kiểm tra màu hiện có. Nhưng đây chỉ là một phỏng đoán. Các giải pháp làm việc dù sao đi nữa ..

Hope this helps ai đó, và rằng tôi không vi phạm bất kỳ thiêng liêng SO quy tắc ...

Cheers!

10

Vâng, có vẻ như lỗi hệ điều hành hơn là một tính năng, vì thanh điều hướng thay đổi màu của mục khi bạn đặt màu tintColor của chúng.

Chúng tôi nhận thấy rằng nếu bạn thay đổi kiểu của mặt hàng, nó sẽ làm mới màu của chúng như là một tác dụng phụ. Làm như sau đã làm việc trong trường hợp của chúng tôi. Các nút gốc được bao quanh, vì vậy chúng tôi thay đổi chúng thành đồng bằng và đặt chúng lại tiếp giáp. Bạn có thể làm một mã phức tạp hơn và chung chung để lưu kiểu hiện tại, đặt một kiểu khác và sau đó chuyển trở lại. Tôi chỉ lười biếng để làm điều đó. : D Dù sao, bạn có được ý tưởng.

toolbar.tintColor = //<some dynamically obtained UIColor> 

// Workaround to properly set the UIBarButtonItem's tint color in iOS 4 
for (UIBarButtonItem * item in toolbar.items) 
{ 
    item.style = UIBarButtonItemStylePlain; 
    item.style = UIBarButtonItemStyleBordered; 
} 

Trân trọng, Rula.

+0

Rất tiếc, không hoạt động đối với tôi –

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