Vừa nâng cấp iPod touch của tôi lên iOS 7.0.3 và "HelveticaNeue-Italic" dường như đã biến mất. Khi tôi truy vấn trên điện thoại với:
[UIFont fontNamesForFamilyName:@"Helvetica Neue"]
Tôi nhận được fontNames sau (13):
HelveticaNeue-BoldItalic,
HelveticaNeue-Light,
HelveticaNeue-UltraLightItalic,
HelveticaNeue-CondensedBold,
HelveticaNeue-MediumItalic,
HelveticaNeue-Thin,
HelveticaNeue-Medium,
HelveticaNeue-ThinItalic,
HelveticaNeue-LightItalic,
HelveticaNeue-UltraLight,
HelveticaNeue-Bold,
HelveticaNeue,
HelveticaNeue-CondensedBlack
Khi tôi thực hiện cùng một truy vấn chạy trong trình mô phỏng, tôi nhận được (14):
HelveticaNeue-BoldItalic,
HelveticaNeue-Light,
**HelveticaNeue-Italic,**
HelveticaNeue-UltraLightItalic,
HelveticaNeue-CondensedBold,
HelveticaNeue-MediumItalic,
HelveticaNeue-Thin,
HelveticaNeue-Medium,
HelveticaNeue-Thin_Italic,
HelveticaNeue-LightItalic,
HelveticaNeue-UltraLight,
HelveticaNeue-Bold,
HelveticaNeue,
HelveticaNeue-CondensedBlack
Có ai khác thấy điều này không?
---- Thông tin mới ----
Tôi đã quay lại video WWDC 2013 "Sử dụng Font với Text Kit" và phần thú vị bắt đầu lúc 12:22. Người thuyết trình nói về "MetaFonts" trong OS X làm ví dụ. Những gì anh ấy nói là phông chữ được gọi như:
+ (NSFont *)messageFontOfSize:(CGFloat)fontSize
không được đảm bảo trả lại cùng một phông chữ cơ bản giữa các phiên bản hoặc thậm chí các mục đích sử dụng khác nhau. Ví dụ của anh ấy là Lucinda Grande. Anh ấy dường như không nói rằng việc sử dụng "HelveticaNeue-Italic" có thể biến mất từ phiên bản này sang phiên bản khác.
Vì vậy, tôi đã tạo một thử nghiệm trong iOS 7. Tôi đã tạo phông chữ của mình bằng mã sau:
UIFontDescriptor *fontDescriptor = [UIFontDescriptor fontDescriptorWithName:@"Helvetica Neue" size:16.0];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];
UIFont *fontWithDescriptor = [UIFont fontWithDescriptor:symbolicFontDescriptor size:16.0];
Tôi đã nhận được một UIFont trở lại hợp lệ cho fontWithDescriptor và khi tôi truy vấn phông chữ cho fontName với:
[fontWithDescriptor fontName]
Tôi đã trở lại ...
HelveticaNeue-Italic
Đi hình nào ???
Vì vậy, một câu trả lời khả thi cho 7.0.3 dường như là đoạn mã trên.
---- Tinh chỉnh thêm ----
Mặc dù giải pháp đã hoạt động ở trên, tôi không nghĩ rằng nó chính xác về mặt hình thức. Tôi đã chuyển sang giải pháp sau
UIFontDescriptor *fontDescriptor = [[UIFontDescriptor alloc] init];
UIFontDescriptor *fontDescriptorForHelveticaNeue = [fontDescriptor fontDescriptorWithFamily:@"Helvetica Neue"];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptorForHelveticaNeue fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];
textFont = [UIFont fontWithDescriptor:symbolicFontDescriptor size:textFontPointSize];
Điều này dường như làm tất cả những điều đúng đắn. Tôi đã thử cách tiếp cận trước đó với một họ phông chữ khác và nó có vẻ bị nhầm lẫn với fontName và fontFamily. Hi vọng điêu nay co ich!