Tôi chưa bao giờ làm việc với autolayout hạn chế trước đó. Tôi có một ứng dụng nhỏ mới đang phát triển và nhận thấy rằng các chế độ xem của NIB được mặc định là tự động thanh toán. Vì vậy, tôi nghĩ rằng tôi sẽ tận dụng cơ hội để làm việc với nó và cố gắng tìm hiểu xem Apple sẽ đi đâu với điều này.
Thử thách đầu tiên:
Tôi cần thay đổi kích thước của MKMapView và tôi muốn chuyển nó sang vị trí mới. Nếu tôi làm điều này theo cách tôi đã quen:
[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;
}];
... thì MKMapView sẽ 'bắt' trở lại chiều cao ban đầu bất cứ khi nào một chế độ xem anh chị em được cập nhật (trong trường hợp của tôi, tiêu đề của UISegmentedControl đang được cập nhật [myUISegmentedControl setTitle:newTitle forSegmentAtIndex:0]
).
Vì vậy, những gì tôi nghĩ tôi muốn làm là thay đổi các ràng buộc của MKMapView từ mức ngang bằng với chiều cao của chế độ xem gốc thành tương đối với phần trên cùng của UISegmentedControl mà nó đang bao gồm:V:[MKMapView]-(16)-[UISegmentedControl]
Điều tôi muốn là chiều cao MKMapView rút ngắn để một số điều khiển bên dưới chế độ xem bản đồ được tiết lộ. Để làm như vậy, tôi nghĩ rằng tôi cần thay đổi ràng buộc từ chế độ xem kích thước đầy đủ cố định thành chế độ xem có giới hạn dưới cùng với đầu của UISegmentedControl ... và tôi muốn nó hoạt ảnh khi chế độ xem thu nhỏ lại thành kích thước mới.
Làm thế nào để một người đi về điều này?
Chỉnh sửa - hoạt ảnh này không hoạt ảnh mặc dù dưới cùng của chế độ xem di chuyển lên 170 ngay lập tức:
[UIView animateWithDuration:1.2f
animations:^{
self.nibMapViewConstraint.constant = -170;
}];
và nibMapViewConstraint
được nối dây trong IB tới giới hạn Không gian dọc dưới cùng.