2013-09-30 19 views
32

Làm cách nào để hỗ trợ Loại động trong UILabelUITextView trong iOS 7? Tôi đang điều chỉnh một trong các dự án của chúng tôi cho iOS 7 và muốn hỗ trợ tính năng trợ năng này. Tôi không thể tìm thấy cách hướng dẫn cụ thể về nó trên trang web dành cho nhà phát triển iOS của Apple. Bất kỳ liên kết hoặc mã mẫu sẽ được đánh giá cao.Cách hỗ trợ loại động trong nhãn trong iOS 7

+0

Kiểm tra hướng dẫn này [Làm thế nào để hỗ trợ động Gõ vào iOS 7 Apps .] (http://mythoughtsandexperiments.blogspot.in/2013/12/how-to-support-dynamic-type-in-ios-7.html) –

Trả lời

57

Nếu bạn sử dụng phương pháp UIFont mới thì bạn đang ở đó rất nhiều - bạn chỉ cần thêm người quan sát để nghe những thay đổi.

Thay vì đặt kích thước phông chữ cụ thể, bạn nên sử dụng preferredFontForTextStyle: và các phương pháp liên quan khi tạo nhãn của bạn (nếu bạn đang sử dụng Trình tạo giao diện, bạn có thể chọn kiểu trực tiếp trong thanh tra). Ví dụ:

self.label.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];

Một khi bạn đã làm điều đó, bạn nên lắng nghe cho UIContentSizeCategoryDidChangeNotification. Khi bạn nhận được thông báo này, bạn nên bố trí các nhãn của mình để hỗ trợ kích thước mới được chọn (nếu bạn đang sử dụng tính năng tự động hoàn tất, điều này thường đơn giản như gửi invalidateIntrinsicContentSize cho các chế độ xem của bạn).

Nếu bạn đang tìm kiếm tài liệu chính thức, hãy xem Text Programming Guide.

+0

Không có cách nào để truy cập kiểu được chọn trong Giao diện Người xây dựng? Nếu không, điều đó có vẻ như một sự giám sát lớn. Bây giờ tôi phải đặt nó ở 2 nơi, có nghĩa là nó chắc chắn sẽ không đồng bộ. – MacsimusPrime

+0

'preferredFontForTextStyle' trả về phông chữ hệ thống, có cách nào để làm điều này với phông chữ tùy chỉnh không? – kevin

1

Trong Swift 3 và iOS 10 bạn có thể sử dụng

headline.font = UIFont.preferredFont(forTextStyle: UIFontTextStyleHeadline) 
headline.adjustsFontForContentSizeCategory = true 

Xem this excellent post để biết thêm thông tin, đặc biệt là làm thế nào để hỗ trợ iOS trước 10

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