ฉันได้ตั้งค่าข้อ จำกัด หลายชุดใน IB และฉันต้องการสลับระหว่างข้อ จำกัด โดยทางโปรแกรมขึ้นอยู่กับสถานะบางอย่าง มีconstraintsA
คอลเลกชันเต้าเสียบทั้งหมดซึ่งทำเครื่องหมายว่าติดตั้งจาก IB และconstraintsB
คอลเลกชันเต้าเสียบซึ่งทั้งหมดถูกถอนการติดตั้งใน IB
ฉันสามารถสลับระหว่างสองชุดโดยทางโปรแกรมได้ดังนี้:
NSLayoutConstraint.deactivateConstraints(constraintsA)
NSLayoutConstraint.activateConstraints(constraintsB)
แต่ ... ฉันคิดไม่ออกว่าจะทำอย่างนั้นเมื่อไหร่ ดูเหมือนว่าฉันควรจะทำแบบนั้นได้ในครั้งเดียวviewDidLoad
แต่ก็ไม่สามารถทำได้ ฉันได้ลองโทรview.updateConstraints()
และview.layoutSubviews()
หลังจากตั้งค่าข้อ จำกัด แล้ว แต่ก็ไม่มีประโยชน์
ฉันพบว่าถ้าฉันตั้งค่าข้อ จำกัด ในviewDidLayoutSubviews
ทุกอย่างทำงานได้ตามที่คาดไว้ ฉันเดาว่าฉันอยากรู้สองสิ่ง ...
- ทำไมฉันถึงได้รับพฤติกรรมนี้
- เป็นไปได้หรือไม่ที่จะเปิด / ปิดข้อ จำกัด จาก viewDidLoad?