'Vary for Traits' ใน Xcode 8 คืออะไร?


86

ฉันใช้ autolayout และขนาดชั้นเรียน แต่ด้วยการเปิดตัว iOS 10 และ Xcode ใหม่ 8.0 Vary for Traitsมีหนึ่งตัวเลือกใหม่ นี่คือการเปลี่ยน Size Classe สำหรับความกว้างและความสูงของอุปกรณ์ที่แตกต่างกัน

ป้อนคำอธิบายภาพที่นี่

โดยการเลือกwidthช่องทำเครื่องหมายจะปรากฏvarying 14 compact width devicesขึ้น

ป้อนคำอธิบายภาพที่นี่

โดยการเลือกheightช่องทำเครื่องหมายจะปรากฏvarying 18 compact height devicesขึ้น

ป้อนคำอธิบายภาพที่นี่

โดยการเลือกช่องทำเครื่องหมายทั้งสองช่องจะปรากฏvarying 11 compact width regular height devicesขึ้น

ป้อนคำอธิบายภาพที่นี่

จะใช้ประโยชน์จากตัวเลือกนี้ได้อย่างไร? เราสามารถใช้ AutoLayout กับคลาสขนาดเช่น Xcode7.0 ได้หรือไม่? หากท่านใดมีความรู้เชิงลึกโปรดอธิบาย


ดูวิดีโอเซสชัน WWDC 2016 ฉันแน่ใจว่ามีบางแห่งครอบคลุมเป็น "คุณลักษณะใหม่ของ Xcode"
Martin R

คำตอบ:


134

นี่เป็นเพียงส่วนเสริมสำหรับวิธีใช้ "ลักษณะที่แตกต่างกัน" อย่างรวดเร็วในโครงการของคุณเพื่อเพิ่มเค้าโครงที่แตกต่างกันสำหรับ iPad และ iPhone

โปรดอ่านสิ่งนี้เพื่อทำความเข้าใจเพิ่มเติมเกี่ยวกับคลาส Size

https://developer.apple.com/reference/uikit/uitraitcollection

ป้อนคำอธิบายภาพที่นี่

หากคุณกำลังข้ามตัวอย่างด้านล่างนี้โปรดอ่านสรุปในตอนท้าย


  • วัตถุประสงค์ :

คุณต้องมีปุ่มที่มีความกว้างต่างกันใน iPhone และ iPad เดิมมีความกว้าง 80 และหลังมีความกว้าง 300

  • วิธีที่ 1:

แตกต่างกันไปสำหรับลักษณะที่มีข้อ จำกัด หลายประการตามที่ติดตั้ง

  • ขั้นตอน:

    1. เพิ่มข้อ จำกัด ทั่วไปก่อนเช่นจัดกึ่งกลางปุ่มในแนวนอนและแนวตั้ง

ป้อนคำอธิบายภาพที่นี่

  1. เลือก VaryForTraits และสำหรับหน้าจอ iPhone ตามหลักเกณฑ์ของคลาสขนาดคลาสขนาด C * R เหมาะกับรุ่นและเราตรวจสอบเครื่องหมายของความกว้างและความสูงในป๊อปอัป ปิดป๊อปอัปโดยคลิกที่ใดก็ได้บนหน้าจอ

ป้อนคำอธิบายภาพที่นี่ ป้อนคำอธิบายภาพที่นี่

  1. เพิ่มค่าคงที่ของความกว้างและตรวจสอบว่ามีการเพิ่มข้อ จำกัด สำหรับคลาสขนาด C * R หรือไม่ หลังจากเพิ่มข้อ จำกัด แล้วให้เลือกปุ่ม Done Varying

ป้อนคำอธิบายภาพที่นี่ ป้อนคำอธิบายภาพที่นี่

  1. สำหรับหน้าจอ iPad ให้เลือกอุปกรณ์ iPad เครื่องใดก็ได้อีกครั้งแล้วเลือก VaryForTraits และในครั้งนี้เมื่อคลิกที่ความกว้างความสูงควรแสดงรูปแบบ R * R

ป้อนคำอธิบายภาพที่นี่ ป้อนคำอธิบายภาพที่นี่

  1. เพิ่มข้อ จำกัด ด้านความกว้างอีกครั้งข้อ จำกัด ความกว้างของ iPhone ที่เพิ่มล่าสุดจะต้องไม่ไฮไลต์เช่นเดียวกับในภาพหน้าจอ มูลค่าเพิ่มจะเป็นของคลาสขนาด R * R ในครั้งนี้

ป้อนคำอธิบายภาพที่นี่ ป้อนคำอธิบายภาพที่นี่

  1. เปลี่ยนกลับไปเป็นเค้าโครงของ iPhone และใช้ความกว้าง 80 ส่วน iPad จะใช้เวลา 300

ป้อนคำอธิบายภาพที่นี่

สรุป:

โปรดสังเกตว่ามีการเพิ่มข้อ จำกัด ทั้งหมดสองข้อและในข้อ จำกัด ทั้งสองค่าจะแตกต่างกันไปตามคลาสขนาดที่เลือก


  • วิธีที่ 2:

แตกต่างกันไปสำหรับลักษณะที่มีข้อ จำกัด เดียวติดตั้งหลายขนาดคลาส

  • ขั้นตอน:
    1. เพิ่มข้อ จำกัด ความกว้างปกติ จากนั้นเลือกข้อ จำกัด นั้นและเลือกปุ่ม + นอกเหนือจากค่าคงที่

ป้อนคำอธิบายภาพที่นี่

  1. เพิ่มรูปแบบลักษณะและสำหรับ iPhone เราเลือก C * R และตั้งค่าคงที่เป็น 100

ป้อนคำอธิบายภาพที่นี่ ป้อนคำอธิบายภาพที่นี่

  1. อีกครั้งสำหรับ iPad ที่ตามรูปแบบลักษณะเป็น R * R เราเพิ่มรูปแบบอื่นโดยคลิกอีกครั้งที่ปุ่ม + และตั้งค่าเป็น 300

ป้อนคำอธิบายภาพที่นี่ ป้อนคำอธิบายภาพที่นี่

  1. เลือก iPad และความกว้างจะถูกจับเป็น 300 โดยอัตโนมัติและกลับมาที่ iPhone โดยใช้ค่า 100

ป้อนคำอธิบายภาพที่นี่

สรุป:

สิ่งนี้ดูเหมือนจะเป็นตัวเลือกที่ดีกว่าการเพิ่มข้อ จำกัด สองข้อเมื่อจำเป็นต้องใช้ข้อ จำกัด เดียวเท่านั้นและค่าคงที่แตกต่างกัน

เมื่อจะใช้สิ่งที่ต้องใช้:

โดยพื้นฐานแล้วทั้งสองวิธีจะทำสิ่งเดียวกันโดยตั้งค่าเป็น Size-class

แต่# Method1จะใช้เมื่อคุณต้องการเพิ่มข้อ จำกัด เฉพาะสำหรับอุปกรณ์หรือพูดขนาด - คลาส ตัวอย่างเช่นใน iPhone ปุ่มควรมาจาก Top 50 pts และใน iPad ควรอยู่กึ่งกลางในแนวนอนและแนวตั้ง ในสถานการณ์เช่นนี้คุณต้องใช้ VaryForTraits เมื่อเปิดประตูเพื่อเพิ่มข้อ จำกัด สำหรับคลาสขนาดเฉพาะ

# Method2ใช้เมื่อคุณต้องการค่าคงที่ต่างกันสำหรับประเภทข้อ จำกัด เดียวกัน

PS: ทุกคนที่ไม่สามารถได้รับตัวอย่างการทำงาน

โปรดตรวจสอบว่าคุณกำลังเพิ่มเฉพาะข้อ จำกัด ที่จำเป็นเมื่อติดตั้งแล้ว ช่องทำเครื่องหมายกับ Installed ควรปรากฏเฉพาะสำหรับข้อ จำกัด ที่คุณต้องการสำหรับคลาสขนาด นั่นคือกุญแจสำคัญ!

ป้อนคำอธิบายภาพที่นี่

เพียงเพิ่มข้อ จำกัด ด้านบน & การนำไปสู่ ​​uiButton ในมุมมอง เลือกข้อ จำกัด ด้านบนและยกเลิกการเลือกตัวเลือกพื้นฐานที่ติดตั้งด้วยเครื่องหมายบวก ตอนนี้โดยคลิกที่เครื่องหมายบวกเพิ่มรูปแบบให้กับ C R และตรวจสอบตัวเลือกนั้น ตอนนี้เปลี่ยนอุปกรณ์จาก iPhone เป็น iPad ด้วยชุดการวางแนวต่างๆ ข้อ จำกัด นี้จะใช้กับคลาสขนาด C R ซึ่งเป็น iPhone ในแนวตั้งเท่านั้น หากช่องทำเครื่องหมายเทียบกับพื้นฐานที่ติดตั้งแล้ว (อันที่มีสัญลักษณ์บวก) ถูกเลือกนั่นหมายความว่าควรใช้ข้อ จำกัด กับคลาสขนาดทั้งหมด

สรุป :

Trait Variation เป็นการเปลี่ยนแปลงการนำเสนออินเทอร์เฟซผู้ใช้ของคุณที่ขึ้นอยู่กับการกำหนดค่าอุปกรณ์ การเปลี่ยนแปลงลักษณะของอินเทอร์เฟซผู้ใช้ไม่ได้ จำกัด อยู่เพียงข้อ จำกัด เท่านั้น แต่ยังสามารถนำไปใช้กับสิ่งอื่น ๆ ได้อีกมากมาย เช่นการเปลี่ยนสีของพื้นหลังและองค์ประกอบอื่น ๆ เมื่ออุปกรณ์ตั้งค่าเป็นสไตล์มืด. รูปแบบสามารถนำไปใช้กับองค์ประกอบของอินเทอร์เฟซผู้ใช้เช่นการลบข้อ จำกัด หรือกับคุณสมบัติของคลาสมุมมองหรือข้อ จำกัด เช่นแบบอักษรสำหรับป้ายกำกับ คุณสามารถเปลี่ยนแปลงได้:

  • ขนาดหรือตำแหน่งของมุมมอง

  • การติดตั้งมุมมอง

  • การติดตั้งข้อ จำกัด

  • ค่าคงที่ข้อ จำกัด

  • แบบอักษร

  • สีสำหรับฟอนต์โทนสีหรือพื้นหลัง

  • ระยะขอบของเค้าโครง

  • ไฟล์รูปภาพ

ชุดคุณสมบัติเฉพาะที่คุณสามารถเปลี่ยนแปลงได้ขึ้นอยู่กับคลาสขององค์ประกอบ ในตัวอย่างเราได้สาธิตการใช้ - การติดตั้งค่าคงที่ข้อ จำกัด & - ค่าคงที่ข้อ จำกัด อื่น ๆ ค่อนข้างเรียบง่ายและสามารถอนุมานได้ง่าย


51
สิ่งนี้ใช้ไม่ได้สำหรับฉัน .. มันอัปเดตข้อ จำกัด ของขนาดหน้าจอทั้งหมดและแทบจะไม่มีอะไรเกิดขึ้น ...
Dan

5
ถ้ามันไม่ได้ทำงานให้ลองอ่านบทความนี้: help.apple.com/xcode/mac/8.0/#/devba3dd0b51 หากคุณต้องการกำหนดฟอนต์หรือคุณสมบัติอื่น ๆ เองให้คลิกเพื่อ "+" ที่อยู่ทางซ้ายของคุณสมบัติในบานหน้าต่างแอตทริบิวต์ และคุณไม่สามารถเปลี่ยนลักษณะสำหรับ iPhone 4s และ iPhone 7 Plus ได้ตัวอย่างเช่นขึ้นอยู่กับความกว้างเนื่องจากทั้งคู่มีความกว้างที่กะทัดรัด คุณสามารถปรับเปลี่ยนได้สำหรับ iPhone และ iPad
Denis Kutlubaev

2
ทำงานให้ฉัน thnx :)
Sanman

1
มันได้ผลสำหรับฉันหลังจากที่ฉันลบข้อ จำกัด เก่าและเพิ่มข้อ จำกัด ใหม่แทนที่จะแทนที่ค่าของมัน
Teodor Ciuraru

2
สำหรับคนที่บอกว่านี่ใช้ไม่ได้ ฉันคิดว่าคุณกำลังพยายามเปลี่ยนข้อ จำกัด ทั้งหมดคุณสามารถทำได้เฉพาะค่าคงที่ในข้อ จำกัด เท่านั้นที่คุณไม่สามารถเปลี่ยนคุณสมบัติหลายอย่างหรือคุณสมบัติอื่น ๆ ของข้อ จำกัด ได้ ฉันก็สับสนในส่วนนี้เช่นกัน
3366784

21

ความแตกต่างสำหรับลักษณะคือวิวัฒนาการของตัวเลือกคลาสขนาดที่มีอยู่ใน Xcode เวอร์ชันที่ผ่านมา ช่วยให้รูปแบบที่ดีขึ้นและแม่นยำขึ้นตามลักษณะ แน่นอนว่าไม่ จำกัด เฉพาะ iPad / iPhone เท่านั้น แต่คุณสามารถระบุรูปแบบต่างๆได้ตามการวางแนวและอุปกรณ์ที่แตกต่างกัน

คำตอบอื่น ๆ ในชุดข้อความนี้มีข้อบกพร่องและไม่ถูกต้องบางประการบางทีวิธีที่มีประสิทธิภาพที่สุดในการให้คำตอบคือการทำตัวอย่าง เพื่อความชัดเจนเราจะ จำกัด ตัวอย่างของเราให้เหลือเพียงปุ่มและสองเค้าโครงเท่านั้น อย่างไรก็ตามตามที่อธิบายไว้ด้านล่างคุณสามารถขยายตัวอย่างต่อไปนี้ได้ตามที่คุณต้องการ เป้าหมายของเราคือการปรับตำแหน่งของปุ่มระหว่างสองรูปแบบที่แตกต่างกัน: แนวนอนและแนวตั้งบนอุปกรณ์ทั้งหมด

หมายเหตุ: หากไม่ได้เปิดใช้งานตัวเลือก“ แตกต่างกันไปสำหรับลักษณะ” การปรับเค้าโครงและอินเตอร์เฟส ui ทั้งหมดจะอ้างถึงลักษณะทั้งหมด (เช่นคลาสทุกขนาด)

มะเดื่อ 1

เริ่มต้นด้วยการใส่ปุ่มบนกระดานเรื่องราวของเรา เนื่องจากไม่ได้เปิดใช้งาน "แตกต่างกันไปตามลักษณะ" ปุ่มจะปรากฏในรูปแบบต่างๆทั้งหมด หาก แต่เราได้เปิดใช้งานการเปลี่ยนแปลงสำหรับลักษณะปุ่มจะถูกอ้างถึงเฉพาะลักษณะเฉพาะที่เลือกเท่านั้น

มะเดื่อ 2

ตอนนี้ให้เปิดใช้งาน“ แตกต่างกันไปตามลักษณะ” และเลือกรูปแบบตามความสูง คุณควรเห็นว่าหน้าจอด้านล่างจะเปลี่ยนเป็นสีน้ำเงินและตามการเลือกคุณจะเห็นอุปกรณ์ทั้งหมดที่ได้รับผลกระทบ จนถึงตอนนี้ดีมาก

มะเดื่อ 3

เลือกปุ่มอีกครั้งและเพิ่มโฆษณาข้อ จำกัด ตามปกติ ในตัวอย่างของเราเราจะเพิ่มช่องว่างด้านบนและด้านซ้ายรวมทั้งความกว้างและความสูง หลังจากนั้นคลิกที่ "เสร็จสิ้นการเปลี่ยนแปลง" คุณจะเห็นว่าส่วนล่างของหน้าจอจะเปลี่ยนเป็นสีเทาอีกครั้ง สิ่งที่เกิดขึ้นคือเราได้บอกให้ Interface Builder เพิ่มข้อ จำกัด ข้างต้นสำหรับคลาส (w: C h: R) เท่านั้น

มะเดื่อ 4

ตอนนี้เลือกโหมดแนวนอนที่ด้านล่างของหน้าจอ คุณจะเห็นว่าปุ่มเป็นสีแดงเนื่องจากไม่มีข้อ จำกัด ที่คุณได้เพิ่มไว้สำหรับลักษณะบางอย่างเท่านั้น เลือกอีกครั้งที่แตกต่างกันสำหรับลักษณะและเลือกอีกครั้งรูปแบบความสูง เพิ่มข้อ จำกัด ต่อไปนี้:

มะเดื่อ 5

และกดเสร็จสิ้นที่แตกต่างกัน ตอนนี้ปุ่มได้รับการระบุอย่างดีบนหน้าจอทั้งในแนวนอนและแนวตั้ง

มะเดื่อ 6

สร้างและเรียกใช้ คุณจะเห็นว่าปุ่มจะเปลี่ยนไปตามการวางแนวของหน้าจอ

คุณสามารถสร้างเค้าโครงขั้นสูงเพิ่มเติมตามรูปแบบนี้ ตัวอย่างเช่นคุณสามารถเลือกคุณสมบัติที่แตกต่างกันไปในตอนเริ่มต้นและวางออบเจ็กต์ UIKit สำหรับลักษณะเฉพาะเท่านั้น อ็อบเจ็กต์นี้จะปรากฏในตัวแปรที่ระบุเท่านั้นและจะเป็นสีเทาสำหรับอ็อบเจ็กต์อื่น ๆ เพื่อให้คุณสร้างอินเทอร์เฟซผู้ใช้ที่แตกต่างกันโดยสิ้นเชิงตามลักษณะ


3
ฉันได้เพิ่มข้อ จำกัด สำหรับคลาส (wC, hR) แล้วฉันก็คลิกที่ทำแตกต่างกันไป เมื่อฉันเปิด (wR, hR) ฉันก็เห็นข้อ จำกัด เก่าด้วย วิธีสร้างข้อ จำกัด ใหม่สำหรับ (wR, hR) คลาสนี้ ช่วยบอกหน่อย @valvolin
Ramcharan Reddy

9

ไม่มีอะไรเลยนอกจากsize classesตัวตน แต่มีการแสดงที่แตกต่างกัน จนxcode 7เราใช้ในชั้นเรียนขนาดและเราจะพิจารณาheight-widthในregular,compact and anyลักษณะที่ในvary for traitsแนวคิดเดียวกัน แต่ Xcode exact deviceเฉพาะอธิบาย ในเวอร์ชันเก่าเรารู้ว่าfor every iphone in portraintข้อมูลประเภทอื่น ๆ ที่เราสามารถรู้อุปกรณ์ที่แน่นอนได้!

ตรวจสอบภาพหน้าจอด้านล่าง

ป้อนคำอธิบายภาพที่นี่

ป้อนคำอธิบายภาพที่นี่

คุณควรดูwwdc2016 - วิดีโอสำหรับข้อมูลเพิ่มเติม!

อ้างอิง: โพสต์นี้


โอเคให้ฉันตรวจสอบวิดีโอ WWDC
technerd

คุณพูดถูกไม่มีอะไรนอกจากวิวัฒนาการของคลาสขนาด
Durai Amuthan.H
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.