ผมไม่เคยทำงานร่วมกับautolayoutจำกัด ก่อน ฉันมีแอปใหม่ขนาดเล็กที่ฉันกำลังทำงานอยู่และสังเกตเห็นว่ามุมมองของ NIB เป็นค่าเริ่มต้นของการกำหนดค่าอัตโนมัติ ดังนั้นฉันคิดว่าฉันจะใช้โอกาสนี้ในการทำงานกับมันและพยายามคิดว่า Apple จะไปที่ไหนกับสิ่งนี้
ความท้าทายแรก:
ฉันต้องการปรับขนาด MKMapView และฉันต้องการทำให้มันเคลื่อนไหวไปยังตำแหน่งใหม่ ถ้าฉันทำแบบนี้เหมือนเคย:
[UIView animateWithDuration:1.2f
animations:^{
CGRect theFrame = worldView.frame;
CGRect newFrame = CGRectMake(theFrame.origin.x, theFrame.origin.y, theFrame.size.width, theFrame.size.height - 170);
worldView.frame = newFrame;
}];
... จากนั้น MKMapView จะ 'snap' กลับสู่ความสูงเดิมเมื่อใดก็ตามที่มีการอัปเดตมุมมองพี่น้อง (ในกรณีของฉันมีการอัปเดตชื่อของ UISegmentedControl [myUISegmentedControl setTitle:newTitle forSegmentAtIndex:0]
)
ดังนั้นสิ่งที่ฉันคิดว่าฉันต้องการจะทำคือการเปลี่ยนข้อ จำกัด ของ MKMapView จากการถูกเท่ากับสูงมุมมองของผู้ปกครองที่จะเป็นญาติไปด้านบนของ UISegmentedControl ว่ามันถูกครอบคลุม:V:[MKMapView]-(16)-[UISegmentedControl]
สิ่งที่ฉันต้องการคือให้ความสูง MKMapView สั้นลงเพื่อให้การควบคุมบางอย่างใต้มุมมองแผนที่ถูกเปิดเผย ในการทำเช่นนั้นฉันคิดว่าฉันต้องเปลี่ยนข้อ จำกัด จากมุมมองขนาดเต็มคงที่เป็นมุมมองที่ด้านล่างถูก จำกัด ไว้ที่ด้านบนของ UISegmentedControl ... และฉันต้องการให้มันเคลื่อนไหวเมื่อมุมมองลดลงเป็นขนาดใหม่
จะไปเกี่ยวกับเรื่องนี้ได้อย่างไร?
แก้ไข - ภาพเคลื่อนไหวนี้ไม่เคลื่อนไหวแม้ว่าด้านล่างของมุมมองจะขยับขึ้น 170 ทันที:
[UIView animateWithDuration:1.2f
animations:^{
self.nibMapViewConstraint.constant = -170;
}];
และต่อnibMapViewConstraint
สายใน IB ไปยังข้อ จำกัด ด้านพื้นที่แนวตั้งด้านล่าง