ฉันรู้สึกว่ามันเป็นกระบวนทัศน์ที่ใช้กันทั่วไปในการแสดง / ซ่อนUIViews
บ่อยที่สุดUILabels
ขึ้นอยู่กับตรรกะทางธุรกิจ คำถามของฉันคือวิธีที่ดีที่สุดในการใช้ AutoLayout เพื่อตอบสนองต่อมุมมองที่ซ่อนอยู่ราวกับว่าเฟรมเป็น 0x0 นี่คือตัวอย่างของรายการแบบไดนามิกของคุณสมบัติ 1-3
ตอนนี้ฉันมีพื้นที่บน 10px จากปุ่มไปยังป้ายกำกับสุดท้ายซึ่งแน่นอนจะไม่เลื่อนขึ้นเมื่อมีการซ่อนป้ายกำกับ ณ ตอนนี้ฉันได้สร้างทางออกให้กับข้อ จำกัด นี้และแก้ไขค่าคงที่ตามจำนวนป้ายที่ฉันกำลังแสดง เห็นได้ชัดว่านี่เป็นเรื่องเล็กน้อยเนื่องจากฉันใช้ค่าคงที่ติดลบเพื่อกดปุ่มขึ้นไปบนเฟรมที่ซ่อนอยู่ มันก็ไม่ดีเช่นกันเพราะมันไม่ได้ถูก จำกัด ด้วยองค์ประกอบเลย์เอาต์ที่แท้จริงเพียงแค่การคำนวณแบบคงที่ซึ่งไม่น่าเชื่อตามความสูง / การซ้อนขององค์ประกอบอื่น ๆ และการต่อสู้กับสิ่งที่ AutoLayout สร้างขึ้น
เห็นได้ชัดว่าฉันสามารถสร้างข้อ จำกัด ใหม่ ๆ ได้ขึ้นอยู่กับป้ายกำกับแบบไดนามิกของฉัน แต่นั่นเป็นเรื่องเล็กมากและการใช้คำฟุ่มเฟือยมากสำหรับการพยายามที่จะยุบช่องว่างบางส่วน มีแนวทางที่ดีกว่านี้ไหม? การเปลี่ยนขนาดเฟรม 0,0 และให้ AutoLayout ทำสิ่งนั้นโดยไม่มีการควบคุมข้อ จำกัด ? กำลังลบมุมมองออกทั้งหมดหรือไม่
แม้ว่าโดยสุจริตเพียงแค่ปรับเปลี่ยนค่าคงที่จากบริบทของมุมมองที่ซ่อนอยู่ต้องใช้รหัสบรรทัดเดียวพร้อมการคำนวณอย่างง่าย สร้างข้อ จำกัด ใหม่ด้วย constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:
ดูเหมือนจะหนักมาก
แก้ไขกุมภาพันธ์ 2018 : คำตอบดูเบนกับUIStackView
s