Tôi đang cố gắng để tùy chỉnh phông chữ UINavigationBar của tôi, sử dụng đoạn mã sau dành cho iOS 5 trong ứng dụng của đại biểu tôi application:didFinishLaunchingWithOptions
:Customize UINavigationBar phông chữ
if ([[UINavigationBar class] respondsToSelector:@selector(appearance)])
{
[[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor whiteColor], UITextAttributeTextColor,
[UIColor blackColor], UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(1, 0)], UITextAttributeTextShadowOffset,
[UIFont fontWithName:kDefaultFont size:0.0], UITextAttributeFont,
nil]];
}
Nó hoạt động tốt và thanh điều hướng được render sử dụng phông chữ của tôi. Tuyệt quá.
references Tôi thấy rằng bạn có thể sử dụng kích thước phông chữ bằng 0 và nó sẽ thay đổi kích thước phông chữ cho phù hợp với thanh điều hướng của bạn (sử dụng phông chữ hơi nhỏ hơn cho thanh điều hướng ngắn hơn cho bố cục ngang). Và nó chọn kích thước phông chữ phù hợp với chiều cao của thanh điều hướng. Nhưng có vẻ như nếu bạn đi từ chân dung đến ngang và sau, chiều rộng của nhãn tiêu đề của thanh điều hướng sẽ bị hỏng, vì vậy những gì hiển thị dưới dạng tiêu đề, ví dụ: "Thanh tiêu đề dài", có vẻ tốt khi bạn xem lần đầu tiên theo hướng dọc, trông đẹp khi bạn xem nó ở chế độ ngang (với phông chữ nhỏ hơn thích hợp), nhưng khi tôi quay lại chân dung, phông chữ sẽ hoàn nguyên về phông chữ lớn hơn, nhưng văn bản tiêu đề bị cắt ngắn, trở thành "Dài .. "mặc dù có rất nhiều không gian cho tiêu đề đầy đủ. Có ai khác nhìn thấy hành vi này khi sử dụng kích thước phông chữ là 0,0?
Rõ ràng, tôi chỉ có thể chỉ định kích thước phông chữ thực tế (trong trường hợp này tôi không thấy hành vi cắt xén này), nhưng sau đó tôi sẽ tự tìm ra kích thước cần sử dụng. Và tệ hơn nữa, kích thước phông chữ giống với phong cảnh và chân dung, vì vậy ngay bây giờ tôi đang sử dụng kích thước phông chữ phù hợp với tiêu đề thanh điều hướng ngang ngắn hơn và tiêu đề nhỏ hơn cần phải ở thanh điều hướng dọc cao hơn.
Có ai đó đã có kinh nghiệm sử dụng setTitleTextAttributes
để thay đổi phông chữ của [UINavigationBar appearance]
theo cách kích thước phông chữ thay đổi giữa dọc và ngang, nhưng không bị cắt xén tiêu đề này khi bạn quay lại chân dung sau khi để cảnh quan? Tôi sắp theo đuổi nhiều cách giải quyết khác nhau, nhưng nếu bạn có bất kỳ kinh nghiệm nào về vấn đề này, hãy cho tôi biết.
Cập nhật:
Trong quá trình nộp lỗi này cho Apple, tôi quyết định để chứng minh làm thế nào để tạo lại vấn đề:
Tạo mới iOS Master-Detail ứng dụng trong Xcode 4.3. 2.
Đặt mã
setTitleTextAttributes
ở trên trong ứng dụng của đại biểuapplication:didFinishLaunchingWithOptions
(Tôi đã sử dụng phông chữ @ "GillSans").Tới MasterViewController và thêm dòng mà nói
self.title = @"Long Title";
luận ra các mã
UIBarButtonItem *addButton
.Chạy chương trình. Lưu ý tiêu đề có nội dung chính xác là "Tiêu đề dài". Xoay ngang. Dường như vẫn ổn. Xoay trở lại chân dung và tiêu đề bây giờ nói "Long ..." mặc dù có nhiều không gian.
Thật kỳ lạ, nếu bạn khôi phục mã
UIBarButtonItem *addButton
, tiêu đề sẽ hoạt động như bình thường. Nhưng nếu bạn loại bỏ mục UIBarButton, hoặc thay thế bằng nút sử dụnginitWithTitle
thay vìinitWithBarButtonSystemItem
, bạn sẽ gặp vấn đề với tiêu đề thanh điều hướng sau khi xoay từ dọc sang ngang và sau đó quay lại dọc.
Tôi gặp sự cố trong đó tiêu đề thanh điều hướng phông chữ tùy chỉnh của tôi bị "cắt bớt sớm" lần đầu tiên chúng được hiển thị nhưng sau đó vẫn ổn. Dường như là một iOS 6-ism. Dù sao, phát hiện ra tôi có thể thiết lập kích thước font chữ để giải quyết vấn đề. Cảm ơn! – mharper
Điều thú vị trên trình mô phỏng iOS5.1 bằng cách sử dụng phương thức này, tiêu đề bị cắt ngắn * trong suốt quá trình chuyển đổi pushModalViewController, nhưng xuất hiện tốt khi quá trình chuyển đổi hoàn tất. Trên trình mô phỏng iOS 6.0, nó hoạt động như mong đợi. –