Xcode 6มีคุณลักษณะใหม่ที่แบบอักษรและขนาดตัวอักษรในUILabel
, UITextField
และUIButton
สามารถตั้งค่าโดยอัตโนมัติตามชั้นขนาดของการกำหนดค่าอุปกรณ์ในปัจจุบันจะอยู่ในสตอรี่บอร์ด ตัวอย่างเช่นคุณสามารถตั้งค่าUILabel
ให้ใช้แบบอักษรขนาด 12 ในการกำหนดค่า "ความกว้างความสูงใดก็ได้" (เช่นบน iPhone ในแนวนอน) และขนาด 18 ในการกำหนดค่า "ความกว้างปกติความสูงปกติ" (เช่นบนiPad ) ดูข้อมูลเพิ่มเติมได้ที่นี่:
developer.apple.com/size_class
นี่เป็นคุณสมบัติที่ยอดเยี่ยมในทางทฤษฎีเนื่องจากอาจทำให้ไม่จำเป็นต้องตั้งค่าแบบอักษรที่แตกต่างกันโดยทางโปรแกรมบนคุณสมบัติ UI ตามการกำหนดค่าอุปกรณ์ ตอนนี้ฉันมีโค้ดเงื่อนไขบางอย่างที่ตั้งค่าฟอนต์ตามประเภทอุปกรณ์ แต่แน่นอนว่านั่นหมายความว่าฉันต้องตั้งค่าฟอนต์โดยใช้โปรแกรมทุกที่ทั่วทั้งแอพ ตอนแรกฉันรู้สึกตื่นเต้นมากเกี่ยวกับคุณสมบัตินี้ แต่ฉันพบว่ามันมีปัญหาอย่างรุนแรงในการใช้งานจริงสำหรับฉัน (อาจเป็นข้อบกพร่อง) โปรดทราบว่าฉันกำลังสร้างจากSDK 8และตั้งเป้าหมายการปรับใช้ขั้นต่ำของiOS 8ดังนั้นสิ่งนี้จึงไม่เกี่ยวข้องกับความเข้ากันได้กับ iOS เวอร์ชันเก่า
ปัญหาคือ: ถ้าฉันตั้งค่าขนาดแบบอักษรที่แตกต่างกันสำหรับคลาสขนาดต่างๆและใช้แบบอักษร "ระบบ" ที่iOSจัดหาให้ทุกอย่างทำงานได้ตามที่คาดไว้และขนาดแบบอักษรจะเปลี่ยนไปตามระดับขนาด หากฉันใช้แบบอักษรที่กำหนดเองที่แอปพลิเคชันของฉันจัดหาให้ (ใช่ฉันได้ตั้งค่าอย่างถูกต้องในชุดแอปพลิเคชันของฉันเนื่องจากทำงานโดยใช้โปรแกรม) และตั้งค่าแบบอักษรที่กำหนดเองเป็นป้ายกำกับในสตอรีบอร์ดของ XCode 6ซึ่งก็ทำงานได้ตามที่คาดไว้เช่นกัน แต่เมื่อฉันพยายามใช้ขนาดที่แตกต่างกันของแบบอักษรที่กำหนดเองสำหรับคลาสที่มีขนาดต่างกันในสตอรีบอร์ดมันก็ใช้ไม่ได้ทันที ความแตกต่างเพียงอย่างเดียวในการกำหนดค่าคือแบบอักษรที่ฉันเลือก (แบบกำหนดเองเทียบกับแบบอักษรของระบบ) แบบอักษรทั้งหมดจะปรากฏในไฟล์อุปกรณ์และตัวจำลองเป็นแบบอักษรเริ่มต้นของระบบที่ขนาดเริ่มต้นโดยไม่คำนึงถึงระดับขนาด (และฉันตรวจสอบผ่านดีบักเกอร์ว่าใช้แทนแบบอักษรของระบบสำหรับแบบอักษรจริงที่ระบุในกระดานเรื่องราว) โดยพื้นฐานแล้วคุณลักษณะของคลาสขนาดดูเหมือนจะใช้งานไม่ได้สำหรับฟอนต์ที่กำหนดเอง นอกจากนี้ที่น่าสนใจคือแบบอักษรที่กำหนดเองจะแสดงและปรับขนาดอย่างเหมาะสมในบานหน้าต่าง "Preview" ของ XCode 6 สำหรับตัวควบคุมมุมมอง: จะหยุดทำงานเฉพาะเมื่อทำงานบนระบบ iOS จริงเท่านั้น (ซึ่งทำให้ฉันคิดว่ากำลังกำหนดค่าอย่างถูกต้อง) .
ฉันลองใช้ฟอนต์ที่กำหนดเองหลายแบบและดูเหมือนจะใช้ไม่ได้กับฟอนต์ใด ๆ เลย แต่จะใช้ได้เสมอถ้าฉันใช้ "ระบบ" แทน
อย่างไรก็ตามมีใครเห็นปัญหานี้ในXcode 6หรือไม่?
มีแนวคิดว่านี่เป็นข้อบกพร่องใน iOS 8, Xcode หรืออะไรบางอย่าง
ฉันทำผิดหรือเปล่า?
วิธีแก้ปัญหาเดียวที่ฉันพบอย่างที่ฉันพูดคือตั้งค่าแบบอักษรทางโปรแกรมต่อไปเหมือนที่ฉันเคยเป็นสำหรับ iOS สามเวอร์ชันเพราะมันใช้งานได้
แต่ฉันชอบที่จะสามารถใช้คุณสมบัตินี้ได้หากสามารถใช้งานกับฟอนต์ที่กำหนดเองได้ การใช้แบบอักษรของระบบไม่เป็นที่ยอมรับสำหรับการออกแบบของเรา
ข้อมูลเพิ่มเติม: ตั้งแต่ Xcode 8.0 ข้อบกพร่องได้รับการแก้ไขแล้ว