2011-10-19 29 views
7

Sử dụng SDK iOS 5 Tôi đang viết một ứng dụng sử dụng phông chữ kiểu tập lệnh tùy chỉnh trong cá thể UINavigationBar của nó. Vấn đề với phông chữ này là, vì nó là trong phong cách kịch bản, glyphs của nó vượt quá giới hạn. Bạn có thể thấy vấn đề trong ứng dụng ở đây:Nhãn tiêu đề cắt trong UINavigationBar trong iOS 5

Example image on a device

Đối với một ví dụ rõ ràng hơn, bạn có thể xem tài liệu photoshop của tôi ở đây:

Photoshop example

Bất kỳ ý tưởng làm thế nào tôi có thể khắc phục vấn đề này? Bản năng đầu tiên của tôi là thiết lập thuộc tính clipsToBounds của UILabel trong UINavigationBar, nhưng dường như không có cách nào được Apple phê chuẩn để truy cập trực tiếp đối tượng này. Điều này đã cản trở tôi một thời gian trong khi tôi đang sử dụng iOS 5 trong phiên bản beta, vì vậy có thể bạn có thể giúp bây giờ rằng NDA đã nâng lên.

Cảm ơn!

+0

Bạn đã xác định điều này? Tôi có chung vấn đề đó. – danbretl

+0

Vâng, tôi đã gửi một vé cho Apple, và sau một thời gian họ trở lại với "UILabel không thể thực sự làm những gì bạn đang yêu cầu," do một số lý do kỹ thuật. Tôi đã không thực sự tìm thấy một công việc xung quanh, và quyết định thay đổi thiết kế của dự án này vì những lý do khác khiến vấn đề này không liên quan. Lấy làm tiếc! – maxluzuriaga

+0

Không sao cả. Cảm ơn các cập nhật. Nếu tôi tìm được giải pháp đáng tin cậy, tôi sẽ đăng câu trả lời. Nó không cắt quá nặng đối với tôi hầu hết thời gian, vì vậy tôi không đầu tư nhiều thời gian vào nó vào lúc này. – danbretl

Trả lời

0

Nếu bạn đang sử dụng bộ điều khiển điều hướng, bạn có thể đặt titleView của UIViewController nhất định đang được hiển thị. Chế độ xem tiêu đề này có thể là UIImageView với tiêu đề dưới dạng tài nguyên .png.

Ví dụ:

Bên UIViewController bạn

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
      self.navigationController.navigationItem.titleView = [[UIImageView alloc] initWithImage:@"yourheader.png"]; 
    } 

    return self; 
} 

Bạn có thể chơi một chút với kích thước của hình ảnh của bạn để làm cho nó phù hợp đúng cách.

Hy vọng điều này có thể hữu ích.

+2

Tôi biết điều này, nhưng trong ứng dụng của tôi tiêu đề cần phải thay đổi cho mọi bộ điều khiển chế độ xem mới, bao gồm thay đổi động dựa trên đầu vào của người dùng, vì vậy giải pháp tĩnh như thế này sẽ không hoạt động. – maxluzuriaga

0

Bạn có thể truy cập thuộc tính clipToBounds hoặc adjustsFontSizeToFitWidth của UILabel không?

Hoặc bạn có thể chọn kích thước phông chữ làm cho nhãn ở chế độ xem UILabel. Một mô tả là có sẵn trên làm thế nào để điều chỉnh kích thước font chữ cho một rect đưa ra ở đây:

How to adjust font size of label to fit the rectangle?

1

Bạn có thể sử dụng UINavigationItem 's titleView để thiết lập một UILabel với một phông chữ tùy chỉnh, và sau đó ghi đè setTitle: để cập nhật tùy chỉnh của bạn nhãn. Nếu cần, sau đó bạn có thể gọi sizeToFit trên nhãn hoặc cập nhật khung theo cách thủ công sau khi sử dụng sizeWithFont: hoặc bất kỳ phương pháp định kích thước nào khác NSString.

1

Tôi gặp vấn đề tương tự và dường như không tìm thấy bất kỳ giải pháp nào gần đây về chủ đề.

Dưới đây là một bài báo tôi thấy mặc dù với một lời giải thích rất lớn của vấn đề: https://web.archive.org/web/20161228102731/http://tinymission.com/post/subclassing-uibutton

Tác giả của bài viết này nói:

Bạn thấy đấy, Apple (hoặc bất cứ ai thiết kế lớp UIButton) quyết định tự động tính chiều rộng của nhãn của nút dựa trên chiều rộng được báo cáo của các chữ cái. ... Vấn đề xuất hiện chủ yếu với phông chữ nghiêng và chữ thảo. ... Cách họ làm tổ là người thiết kế phông chữ thực sự rút ra bức thư cố tình bên ngoài giới hạn được tính toán của nó. Điều này cho phép hai chữ cái chữ thảo chạm vào và các kiểu chữ khác gần nhau hơn để một chữ cái như ‘f’ trông không khác xa so với chữ ‘t’.

Hy vọng điều này sẽ giúp mọi người trong tương lai gặp vướng mắc trên bài đăng này với cùng một vấn đề!

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