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