เพิ่งอัปเกรด iPod touch เป็น iOS 7.0.3 และดูเหมือนว่า "HelveticaNeue-Italic" จะหายไป เมื่อฉันสอบถามทางโทรศัพท์ด้วย:
[UIFont fontNamesForFamilyName:@"Helvetica Neue"]
ฉันได้รับ fontNames ต่อไปนี้ (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
เมื่อฉันทำแบบสอบถามเดียวกันกับที่ทำงานในโปรแกรมจำลองฉันได้รับ (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
มีใครเห็นบ้างไหม
---- ข้อมูลใหม่ ----
ฉันย้อนกลับไปที่วิดีโอ WWDC 2013 เรื่อง "การใช้ฟอนต์กับชุดข้อความ" และส่วนที่น่าสนใจเริ่มต้นเวลา 12:22 น. ผู้นำเสนอพูดถึง "MetaFonts" ใน OS X เป็นตัวอย่าง สิ่งที่เขาพูดคือแบบอักษรภายใต้การโทรเช่น:
+ (NSFont *)messageFontOfSize:(CGFloat)fontSize
ไม่รับประกันว่าจะส่งคืนฟอนต์ต้นแบบเดียวกันในเวอร์ชันต่างๆหรือแม้แต่การใช้งานที่แตกต่างกัน ตัวอย่างของเขาคือ Lucinda Grande ดูเหมือนเขาจะไม่ได้บอกว่าการใช้ "HelveticaNeue-Italic" จะหายไปจากเวอร์ชันหนึ่งไปอีกเวอร์ชันหนึ่ง
ดังนั้นฉันจึงสร้างการทดลองใน iOS 7 ฉันสร้างแบบอักษรของฉันด้วยรหัสต่อไปนี้:
UIFontDescriptor *fontDescriptor = [UIFontDescriptor fontDescriptorWithName:@"Helvetica Neue" size:16.0];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];
UIFont *fontWithDescriptor = [UIFont fontWithDescriptor:symbolicFontDescriptor size:16.0];
ฉันได้รับ UIFont ที่ถูกต้องกลับมาสำหรับ fontWithDescriptor และเมื่อฉันสอบถามแบบอักษรสำหรับ fontName ด้วย:
[fontWithDescriptor fontName]
ฉันกลับมาแล้ว ...
HelveticaNeue-Italic
ไปรูป ???
คำตอบที่เป็นไปได้สำหรับ 7.0.3 น่าจะเป็นโค้ดด้านบน
---- ปรับแต่งเพิ่มเติม ----
แม้ว่าวิธีแก้ปัญหาจะใช้ได้ผลข้างต้น แต่ฉันไม่คิดว่ามันถูกต้องอย่างเป็นทางการ ฉันเปลี่ยนไปใช้วิธีแก้ไขปัญหาต่อไปนี้แล้ว
UIFontDescriptor *fontDescriptor = [[UIFontDescriptor alloc] init];
UIFontDescriptor *fontDescriptorForHelveticaNeue = [fontDescriptor fontDescriptorWithFamily:@"Helvetica Neue"];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptorForHelveticaNeue fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];
textFont = [UIFont fontWithDescriptor:symbolicFontDescriptor size:textFontPointSize];
ดูเหมือนว่าจะทำสิ่งที่ถูกต้องทั้งหมด ฉันลองใช้วิธีการก่อนหน้านี้กับตระกูลฟอนต์อื่นและดูเหมือนว่าจะสับสนกับ fontName และ fontFamily หวังว่านี่จะช่วยได้!