xem "Thay đổi màu sắc của UINavigationBarButtons"
EDIT: Tôi loại bỏ các liên kết vì miền xuống ...
Các là văn bản từ bộ nhớ cache google:
Được rồi, đây là một mẹo nhanh khác. "Làm thế nào để thay đổi màu sắc của một nút trên thanh công cụ." Tất nhiên, điều này có thể được áp dụng cho bất kỳ thanh công cụ nhưng tôi sẽ chứng minh các thủ tục trên một UINavigationBar.
Hình ảnh trên chỉ hiển thị một vài màu. Trong sự thật, bạn có thể làm cho nút bất kỳ màu nào mà bạn muốn. Tuyệt diệu! Mã thực sự đơn giản để làm điều này là tốt. Điều đầu tiên mà chúng tôi muốn làm là mở tập tin tiêu đề cho bất kỳ đối tượng nào sẽ chuyển một nút thanh nav một màu khác và khai báo lớp UINavigationButton về phía trước. Bạn có thể nhận được lớp này bằng cách lặp qua các bản xem con của UINavigationBar, đọc các tên lớp con của nó, hoặc bởi lớp UIKit bán phá giá nếu bạn có một thiết bị bẻ khóa.
Nơi dòng sau trước khi tuyên bố giao diện của bạn:
@class UINavigationButton;
Bây giờ, khai báo một phương pháp mới trong tiêu đề mà chúng ta sẽ sử dụng để thực sự thay đổi màu sắc của nút.
- (void)changeNavigationButtonColorToColor:(UIColor *)newColor
Hoặc điều gì đó tương tự như dòng mã trên.
Bây giờ, hãy mở tệp triển khai đối tượng của bạn và triển khai phương pháp trên. Bất kỳ nơi nào trong tệp của bạn, hãy thêm phương thức sau:
- (void)changeNavigationButtonColorToColor:(UIColor *)newColor {
for (UIView *view in self.navigationController.navigationBar.subviews) {
NSLog(@"%@", [[view class] description]);
if ([[[view class] description] isEqualToString:@"UINavigationButton"]) {
[(UINavigationButton *)view setTintColor:newColor];
}
}
}
Như bạn có thể thấy ở trên, điều này thực sự dễ dàng hơn rất nhiều so với lần đầu tiên xuất hiện. Những gì chúng tôi làm đầu tiên là thiết lập vòng lặp for để lặp qua các bản xem con của UINavigationBar sử dụng NSFastEnumeration. Sau đó chúng tôi xuất tên lớp của khung nhìn con, để tham khảo trong tương lai. NẾU tên lớp là UINavigationButton, thì chúng ta đã có quan điểm của mình. Tất cả những gì chúng ta làm là thiết lập thuộc tính tintColor nếu UINavigationButton.
Vậy đó, chúng tôi đã hoàn tất!
Hoặc, nếu bạn muốn có phạm vi rộng hơn, tôi khuyên bạn nên tạo danh mục UINavigationBar mới và đặt phương pháp thay đổi màu nút ở đó. Đây là phương pháp của bạn có thể được thực hiện bởi bất kỳ lớp nào sử dụng UINavigationBar mà không phải tạo lại cùng một phương thức.
Hãy nhớ rằng, nút quay lại và nút điều hướng không giống nhau. Bạn sẽ phải tô màu nút quay lại một cách riêng biệt.
Và như thường lệ, đây là một liên kết đến một ứng dụng mẫu thể hiện mã này: NavButtonColor.zip
Cảm ơn bạn rất nhiều !!!!! –