คุณไม่ได้อธิบายถึงขนาดที่พอดี คุณกำลังอธิบายลักษณะที่เหมาะสม (ฉันได้แก้ไขคำถามของคุณในเรื่องนี้) มุมมองย่อยนั้นมีขนาดใหญ่ที่สุดเท่าที่จะเป็นไปได้ในขณะที่ยังคงรักษาอัตราส่วนภาพและปรับให้เหมาะสมภายในพาเรนต์ของมัน
อย่างไรก็ตามคุณสามารถทำได้ด้วยเลย์เอาต์อัตโนมัติ คุณสามารถทำได้ทั้งหมดใน IB ตั้งแต่ Xcode 5.1 เริ่มจากมุมมอง:
มุมมองสีเขียวอ่อนมีอัตราส่วนกว้างยาว 4: 1 มุมมองสีเขียวเข้มมีอัตราส่วนกว้างยาวเท่ากับ 1: 4 ฉันจะตั้งค่าข้อ จำกัด เพื่อให้มุมมองสีฟ้าเติมครึ่งบนของหน้าจอมุมมองสีชมพูจะเติมครึ่งล่างของหน้าจอและมุมมองสีเขียวแต่ละจุดจะขยายให้มากที่สุดเท่าที่จะทำได้ขณะที่ยังคงรักษาอัตราส่วนและความเหมาะสมใน ภาชนะ
ก่อนอื่นฉันจะสร้างข้อ จำกัด ในมุมมองทั้งสี่ด้านของสีน้ำเงิน ฉันจะตรึงมันไว้กับเพื่อนบ้านที่ใกล้ที่สุดของแต่ละขอบด้วยระยะทาง 0 ฉันต้องปิดระยะขอบ:
โปรดทราบว่าฉันยังไม่อัปเดตเฟรม ฉันพบว่าง่ายกว่าที่จะออกจากห้องระหว่างมุมมองเมื่อตั้งค่าข้อ จำกัด และตั้งค่าคงที่เป็น 0 (หรืออะไรก็ตาม) ด้วยมือ
ต่อไปฉันตรึงมุมซ้ายด้านล่างและมุมขวาของสีชมพูกับเพื่อนบ้านที่ใกล้ที่สุด ฉันไม่จำเป็นต้องตั้งค่าข้อ จำกัด ขอบด้านบนเนื่องจากขอบด้านบนของมันถูก จำกัด อยู่ที่ขอบด้านล่างของมุมมองสีน้ำเงิน
ฉันยังต้องการข้อ จำกัด ความสูงเท่ากันระหว่างมุมมองสีชมพูและสีน้ำเงิน สิ่งนี้จะทำให้พวกเขาแต่ละครึ่งเต็มหน้าจอ:
ถ้าฉันบอกให้ Xcode อัปเดตเฟรมทั้งหมดฉันจะได้รับ:
ดังนั้นข้อ จำกัด ที่ฉันตั้งขึ้นมานั้นถูกต้องแล้ว ฉันเลิกทำแล้วเริ่มทำงานกับมุมมองสีเขียวอ่อน
การปรับมุมมองมุมมองสีเขียวอ่อนต้องใช้ข้อ จำกัด ห้าประการ:
- ข้อ จำกัด อัตราส่วนภาพที่จำเป็นสำหรับมุมมองสีเขียวอ่อน คุณสามารถสร้างข้อ จำกัด นี้ใน xib หรือกระดานเรื่องราวด้วย Xcode 5.1 หรือใหม่กว่า
- ข้อ จำกัด ลำดับความสำคัญที่ต้องการจำกัดความกว้างของมุมมองสีเขียวอ่อนให้น้อยกว่าหรือเท่ากับความกว้างของคอนเทนเนอร์
- ข้อ จำกัด ที่มีลำดับความสำคัญสูงตั้งค่าความกว้างของมุมมองสีเขียวอ่อนให้เท่ากับความกว้างของคอนเทนเนอร์
- ข้อ จำกัด ลำดับความสำคัญที่ต้องการ จำกัด ความสูงของมุมมองสีเขียวอ่อนให้น้อยกว่าหรือเท่ากับความสูงของคอนเทนเนอร์
- ข้อ จำกัด ที่มีลำดับความสำคัญสูงตั้งค่าความสูงของมุมมองสีเขียวอ่อนให้เท่ากับความสูงของคอนเทนเนอร์
ลองพิจารณาข้อ จำกัด ความกว้างสองข้อ ข้อ จำกัด น้อยกว่าหรือเท่ากับไม่เพียงพอที่จะพิจารณาความกว้างของมุมมองสีเขียวอ่อน หลายความกว้างจะพอดีกับข้อ จำกัด เนื่องจากมีความคลุมเครือการหาค่าอัตโนมัติจะพยายามเลือกโซลูชันที่ช่วยลดข้อผิดพลาดในข้อ จำกัด อื่น ๆ (ลำดับความสำคัญสูง แต่ไม่จำเป็น) การลดข้อผิดพลาดหมายถึงการทำให้ความกว้างใกล้เคียงกับความกว้างของภาชนะบรรจุมากที่สุดในขณะที่ไม่ละเมิดข้อ จำกัด ที่น้อยกว่าหรือเท่ากับที่ต้องการ
สิ่งเดียวกันเกิดขึ้นกับข้อจำกัดความสูง และเนื่องจากจำเป็นต้องมีข้อ จำกัด อัตราส่วนกว้างยาวจึงสามารถเพิ่มขนาดของมุมมองย่อยตามแกนเดียวได้เท่านั้น (เว้นแต่คอนเทนเนอร์จะมีอัตราส่วนกว้างยาวเท่ากับมุมมองย่อย)
ดังนั้นก่อนอื่นฉันสร้างข้อ จำกัด อัตราส่วนกว้างยาว:
จากนั้นฉันสร้างข้อ จำกัด ความกว้างและความสูงเท่ากับคอนเทนเนอร์:
ฉันต้องการแก้ไขข้อ จำกัด เหล่านี้ให้เป็นข้อ จำกัด น้อยกว่าหรือเท่ากับ:
ต่อไปฉันต้องสร้างข้อ จำกัด ความกว้างและความสูงเท่ากับชุดอื่นด้วยคอนเทนเนอร์:
และฉันต้องการทำให้ข้อ จำกัด ใหม่เหล่านี้น้อยกว่าลำดับความสำคัญที่ต้องการ:
ท้ายที่สุดคุณขอให้การย่อยนั้นอยู่กึ่งกลางในคอนเทนเนอร์ดังนั้นฉันจะตั้งค่าข้อ จำกัด เหล่านั้น:
ตอนนี้เพื่อทดสอบฉันจะเลือกตัวควบคุมมุมมองและขอให้ Xcode อัปเดตเฟรมทั้งหมด นี่คือสิ่งที่ฉันได้รับ:
อ๊ะ! มุมมองย่อยได้ขยายเพื่อเติมเต็มคอนเทนเนอร์ ถ้าผมเลือกผมจะเห็นว่าในความเป็นจริงมันบำรุงรักษาอัตราส่วนของมัน แต่มันทำ aspect- เติมแทน aspect- พอดี
ปัญหาคือว่าในข้อ จำกัด น้อยกว่าหรือเท่ากันมันเป็นเรื่องสำคัญที่มุมมองที่ปลายแต่ละด้านของข้อ จำกัด และ Xcode ได้ตั้งค่าข้อ จำกัด ตรงข้ามกับความคาดหวังของฉัน ฉันสามารถเลือกข้อ จำกัด ทั้งสองข้อและย้อนกลับรายการแรกและข้อที่สองได้ แต่ฉันจะเลือกมุมมองย่อยและเปลี่ยนข้อ จำกัด ให้มากกว่าหรือเท่ากับ:
Xcode อัพเดตเค้าโครง:
ตอนนี้ฉันทำสิ่งเดียวกันทั้งหมดกับมุมมองสีเขียวเข้มที่ด้านล่าง ฉันต้องตรวจสอบให้แน่ใจว่าอัตราส่วนภาพคือ 1: 4 (Xcode ปรับขนาดในลักษณะแปลก ๆ เนื่องจากไม่มีข้อ จำกัด ) ฉันจะไม่แสดงขั้นตอนอีกครั้งเนื่องจากมันเหมือนกัน นี่คือผลลัพธ์:
ตอนนี้ฉันสามารถรันมันในเครื่องจำลอง iPhone 4S ซึ่งมีขนาดหน้าจอที่แตกต่างจากการใช้ IB และการหมุนทดสอบ
และฉันสามารถทดสอบในเครื่องจำลอง iPhone 6:
ฉันได้อัปโหลดกระดานเรื่องราวสุดท้ายของฉันไปยังส่วนสำคัญนี้เพื่อความสะดวกของคุณ