14
การปรับขนาดแบบอักษรที่กำหนดเองในคลาสขนาด Xcode 6 ทำงานไม่ถูกต้องกับแบบอักษรที่กำหนดเอง
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 …