iOS Autolayout: ปุ่มสองปุ่มที่มีความกว้างเท่ากันเคียงข้างกัน


93

ขณะนี้ฉันมีปัญหากับ AutoLayout ฉันใช้ตัวสร้างอินเทอร์เฟซและกำลังพยายามวางตำแหน่งปุ่มสองปุ่มที่มีความกว้างเท่ากันเคียงข้างกันดังภาพประกอบในภาพต่อไปนี้

เค้าโครงวัตถุประสงค์

จากภาพตัวอย่างต่อไปนี้ titleImage ของฉันได้รับการ จำกัด อย่างเหมาะสมและแสดงอย่างถูกต้อง แต่ปุ่มต่างๆไม่แสดง ฉันได้ทดลองโดยจัดปุ่ม 1 ให้ตรงกับขอบนำหน้าของ titleImage และ button2 กับขอบต่อท้ายของ titleImage อย่างไรก็ตามการกระจายความกว้างระหว่างปุ่มทั้งสองจะเอียงในจุดนี้ดังที่แสดงด้านล่าง

สถานการณ์ปัญหา

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


1
การก่ออิฐเป็นวิธีที่แนะนำให้ทำผ่านทางโปรแกรม ลิงก์: github.com/Masonry/Masonry
Itachi

1
นี่คือลิงค์ ... ตรวจสอบได้ ... stackoverflow.com/questions/29620409/…
EI Captain v2.0

คำตอบ:


246

เพิ่มข้อ จำกัด ต่อไปนี้

  1. กำหนดความกว้างเท่ากันจาก button1 ถึง button2
  2. กำหนดระยะห่างแนวนอนระหว่างปุ่มทั้งสอง
  3. กำหนดพื้นที่นำหน้าจาก button1 ไปยัง superview
  4. กำหนดพื้นที่ต่อท้ายจาก button2 ไปยัง superview
  5. กำหนดพื้นที่ด้านบนให้กับทั้งสองปุ่ม
    แจ้งให้เราทราบหากวิธีนี้เหมาะกับคุณ

7
ยอดเยี่ยม - สิ่งนี้ใช้ได้ผลสำหรับฉัน ชี้เฉพาะ # 2 - เพิ่มระยะห่างขอบฟ้า
Scratcha

ว้าว !!! ฉันหมายถึงอะไร? มันใช้งานได้ดีจริงๆและฉันเสียเวลาไปประมาณ 3 ชั่วโมง! :( ในกรณีของฉันฉันมีมุมมองสองมุมมองที่มีความกว้างเท่ากันใน Super View ที่หารด้วยอย่างไรก็ตามมันถามฉันในตอนท้ายว่า "ต้องการข้อ จำกัด สำหรับ Y หรือความสูง" ฉันเลือกที่จะทำ "เพิ่มข้อ จำกัด ที่ขาดหายไป" และได้รับการแก้ไขแล้ว
Randika Vishman

@Abubakr: ใช้งานได้กับขนาดหน้าจอเดียวเนื่องจากปุ่มทั้งสองมีความกว้างเท่ากัน
AG

1
ใช้งานได้กับองค์ประกอบ UI ที่อยู่ติดกันมากกว่า 2 รายการด้วย!
siege_Perilous

1
ขอบคุณมาก แต่ฉันพบวิธีแก้ปัญหาและดีกว่าในโค้ด จัดให้หนึ่งในนั้นตรงกลางกับพาเรนต์และให้ครึ่งหนึ่งของขนาดเนื้อหาคงที่ซึ่งคุณสามารถคำนวณได้ในโค้ดหรือหากเนื้อหาเป็นแบบคงที่คุณสามารถอัปเดตเฟรมและอัปเดตค่าคงที่ได้ นอกจากนี้ยังเพิ่มครึ่งหนึ่งของระยะห่างกึ่งกลางระหว่างสองปุ่มเพื่อจัดตำแหน่งกึ่งกลางนั้น และเพียงแค่ให้ปุ่มนำหน้าหรือต่อท้ายไปที่ปุ่มอื่น แก้ไขปัญหานี้ให้ฉัน และหากเนื้อหาของคุณเป็นเนื้อแท้และจำเป็นต้องอัปเดตเพียงแค่เรียกใช้วิธีการอัปเดตเค้าโครงและคำนวณค่าคงที่อีกครั้ง
Amber K

80

ทำตามขั้นตอนและภาพหน้าจอเพื่อแก้ปัญหาง่ายๆ


ขั้นตอนที่ 1)

  • สำหรับปุ่ม 1: ตั้งค่าข้อ จำกัด : (1) ชั้นนำ (2) บนหรือล่างตามความต้องการของคุณ (3) ความสูง


ขั้นตอนที่ 2)

  • สำหรับปุ่ม 2: ตั้งค่าข้อ จำกัด : (1) ต่อท้าย (2) บนหรือล่างตามความต้องการของคุณ (3) ความสูง

ขั้นตอนที่ 3)

  • กด Ctrl + ลากจากปุ่ม 1 ถึงปุ่ม 2

  • เลือกระยะห่างแนวนอน


ขั้นตอนที่ 4)

  • เลือกทั้งสองปุ่ม (โดยใช้คำสั่ง) และเพิ่มข้อ จำกัด ที่มีความกว้างเท่ากัน


เอาท์พุท

หวังว่าจะช่วยคุณ :)


1
ความสูงไม่ควรคงที่ ให้มุมมองกำหนดความสูงของปุ่มตามขนาดหน้าจอ
Kunal Kumar

@KunalKumar กรณีนี้ความสูงคงที่ คุณช่วยบอกฉันได้ไหมว่าคุณเป็นอะไร?
Vvk

@Vvk ... perfect bro :)
Jaywant Khedkar

18

เค้าโครงกองใน iOS9 จะทำงานได้ดีจริงๆ เพิ่มมุมมองสแต็กในมุมมองของคุณและกำหนดค่าดังต่อไปนี้:

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


2

คุณสามารถตรวจสอบตัวอย่างของฉัน - คุณสามารถเล็งสิ่งนี้ได้อย่างง่ายดายโดยใช้ข้อ จำกัด ตามสัดส่วน นอกจากนี้คุณยังสามารถเล็ง UIViews หลายตามสัดส่วนได้อย่างง่ายดาย โปรดดูตัวอย่างที่แนบมา

https://dl.dropboxusercontent.com/u/48223929/TestViewController.xib


0

วิธีแก้ปัญหาของฉันคือ

  1. วางมุมมองเล็ก ๆ ไว้ตรงกลางของปุ่มสองปุ่มและทำให้ตรงกลาง (ตรงกลางแนวนอนในคอนเทนเนอร์และตรงกลางแนวตั้งใน contener เป็น 0)
  2. เพิ่มความสูงและความกว้างให้กับมุมมองขนาดเล็ก
  3. เพิ่มปุ่มข้อ จำกัด และกำหนดพื้นที่แนวนอนให้กับมุมมองขนาดเล็ก
  4. ให้สีพื้นหลังของมุมมองขนาดเล็กเหมือนกับปุ่มหรือสีของมุมมอง

หมายเหตุ:ดูภาพหน้าจอ

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

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