ดูไม่มี SPACERS!
จากคำแนะนำในส่วนความเห็นของคำตอบดั้งเดิมโดยเฉพาะคำแนะนำที่เป็นประโยชน์ของ @ Rivera ฉันได้ทำให้คำตอบดั้งเดิมของฉันง่ายขึ้น
ฉันใช้ gif เพื่อแสดงว่ามันง่ายแค่ไหน ฉันหวังว่าคุณจะพบ gif ที่เป็นประโยชน์ ในกรณีที่คุณมีปัญหากับ GIF ฉันได้รวมคำตอบเก่าไว้ด้านล่างด้วยภาพหน้าจอธรรมดา
คำแนะนำ:
1)เพิ่มปุ่มหรือป้ายกำกับของคุณ ฉันใช้ 3 ปุ่ม
2)เพิ่มข้อ จำกัด กลาง x จากแต่ละปุ่มไปยังผู้ควบคุม:
3)เพิ่มข้อ จำกัด จากแต่ละปุ่มไปยังข้อ จำกัด ด้านเค้าโครง:
4)ปรับข้อ จำกัด ที่เพิ่มใน # 3 ด้านบนดังนี้:
a)เลือกข้อ จำกัด
b)ลบค่าคงที่ (ตั้งค่าเป็น 0),
c)เปลี่ยนตัวคูณดังนี้: ใช้จำนวนของปุ่ม + 1 และเริ่มที่ด้านบนตั้งค่าตัวคูณเป็นbuttonCountPlus1: 1จากนั้นbuttonCountPlus1 : 2และในที่สุดก็buttonCountPlus1: 3 (ฉันอธิบายว่าฉันได้รับสูตรนี้จากคำตอบเก่าด้านล่างหากคุณสนใจ)
5)นี่คือการสาธิตการทำงาน!
หมายเหตุ: หากปุ่มของคุณมีความสูงมากกว่านั้นคุณจะต้องชดเชยสิ่งนี้ในค่าคงที่เนื่องจากข้อ จำกัด มาจากด้านล่างของปุ่ม
คำตอบเก่า
แม้จะมีสิ่งที่เอกสารของ Apple และหนังสือยอดเยี่ยมของ Erica Sadun ( Auto Layout Demystified ) พูด แต่ก็เป็นไปได้ที่จะมีมุมมองพื้นที่เท่ากันโดยไม่มี spacers สิ่งนี้ง่ายมากที่จะทำใน IB และในรหัสสำหรับองค์ประกอบจำนวนเท่าใดก็ได้ที่คุณต้องการให้มีพื้นที่เท่ากัน สิ่งที่คุณต้องมีคือสูตรคณิตศาสตร์ที่เรียกว่า "ส่วนสูตร" มันง่ายกว่าที่จะอธิบาย ฉันจะทำให้ดีที่สุดด้วยการสาธิตมันใน IB แต่มันก็ง่ายที่จะทำในโค้ด
ในตัวอย่างที่เป็นปัญหาคุณจะ
1) เริ่มต้นด้วยการตั้งค่าป้ายกำกับแต่ละป้ายให้มีข้อ จำกัด ตรงกลาง มันง่ายมากที่จะทำ เพียงควบคุมการลากจากแต่ละป้ายกำกับที่ด้านล่าง
2) กดปุ่ม Shift ค้างไว้เนื่องจากคุณอาจเพิ่มข้อ จำกัด อื่น ๆ ที่เราจะใช้นั่นคือ "พื้นที่ด้านล่างไปยังแนวทางโครงร่างด้านล่าง"
3) เลือก "ช่องว่างด้านล่างถึงคู่มือการจัดวางด้านล่าง" และ "กึ่งกลางแนวนอนในคอนเทนเนอร์" ทำเช่นนี้กับทั้ง 3 ป้ายกำกับ
โดยทั่วไปถ้าเราใช้ป้ายกำกับที่มีพิกัดที่เราต้องการกำหนดและหารด้วยจำนวนป้ายกำกับทั้งหมดบวก 1 แล้วเรามีหมายเลขที่เราสามารถเพิ่มลงใน IB เพื่อรับตำแหน่งแบบไดนามิก ฉันกำลังทำให้สูตรง่ายขึ้น แต่คุณสามารถใช้เพื่อตั้งค่าระยะห่างแนวนอนหรือทั้งแนวตั้งและแนวนอนในเวลาเดียวกัน มันทรงพลังมาก!
นี่คือตัวคูณของเรา
Label1 = 1/4 = .25,
Label2 = 2/4 = .5,
Label3 = 3/4 = .75
(แก้ไข: @Rivera แสดงความคิดเห็นว่าคุณสามารถใช้อัตราส่วนโดยตรงในฟิลด์ตัวคูณและ xCode ทำคณิตศาสตร์!)
4) ดังนั้นเลือก Label1 แล้วเลือกข้อ จำกัด ด้านล่าง แบบนี้:
5) เลือก "รายการที่สอง" ในตัวตรวจสอบคุณสมบัติ
6) จากรายการดรอปดาวน์เลือก "กลับรายการแรกและรายการที่สอง"
7) Zero คงที่และค่า wC hAny (คุณสามารถเพิ่มออฟเซ็ตที่นี่หากคุณต้องการ)
8) นี่คือส่วนสำคัญ: ในฟิลด์ตัวคูณเพิ่มตัวคูณแรกของเรา 0.25
9) ในขณะที่คุณกำลังตั้งค่า "รายการแรก" เป็น "CenterY" ด้านบนเนื่องจากเราต้องการจัดกึ่งกลางไปยังศูนย์ y ของป้ายกำกับ นี่คือลักษณะที่ควรมี
10) ทำซ้ำขั้นตอนนี้สำหรับแต่ละฉลากและเสียบตัวคูณที่เกี่ยวข้อง: 0.5 สำหรับ Label2 และ 0.75 สำหรับ Label3 นี่คือผลิตภัณฑ์ขั้นสุดท้ายในทุกทิศทางด้วยอุปกรณ์ขนาดกะทัดรัด! ง่ายสุด ๆ ฉันได้ดูโซลูชันจำนวนมากที่เกี่ยวข้องกับรีมโค้ดและสเปเซอร์ นี่เป็นทางออกที่ดีที่สุดที่ฉันเคยเห็นในเรื่องนี้
อัปเดต: @kraftydevil เพิ่มว่าคู่มือเลย์เอาต์ด้านล่างจะปรากฏในกระดานเรื่องราวเท่านั้นไม่ใช่ในรูปแบบ xibs ใช้ 'Bottom Space to Container' เป็น xibs จับดี!