XEM, KHÔNG CÓ SPACERS!
Dựa trên các đề xuất trong phần nhận xét về câu trả lời ban đầu của tôi, đặc biệt là các đề xuất hữu ích của @ Rivera, tôi đã đơn giản hóa câu trả lời ban đầu của mình.
Tôi đang sử dụng gifs để minh họa cách đơn giản này. Tôi hy vọng bạn tìm thấy gifs hữu ích. Chỉ trong trường hợp bạn gặp vấn đề với gifs, tôi đã bao gồm câu trả lời cũ bên dưới với ảnh chụp màn hình đơn giản.
Hướng dẫn:
1) Thêm các nút hoặc nhãn của bạn. Tôi đang sử dụng 3 nút.
2) Thêm một ràng buộc trung tâm x từ mỗi nút vào giám sát:
3) Thêm một ràng buộc từ mỗi nút vào ràng buộc bố cục dưới cùng:
4) Điều chỉnh các ràng buộc được thêm vào # 3 ở trên như sau:
a) chọn ràng buộc,
b) xóa hằng số (đặt thành 0),
c) thay đổi hệ số nhân như sau: lấy số nút + 1 và bắt đầu ở trên cùng, đặt số nhân làm nútCountPlus1: 1 , rồi nhấn nútCountPlus1 : 2 , và cuối cùng là nútCountPlus1: 3 . (Tôi giải thích nơi tôi đã nhận công thức này từ câu trả lời cũ bên dưới, nếu bạn quan tâm).
5) Đây là bản demo đang chạy!
Lưu ý: Nếu các nút của bạn có chiều cao lớn hơn thì bạn sẽ cần phải bù cho giá trị này trong giá trị không đổi vì ràng buộc là từ dưới cùng của nút.
Câu trả lời cũ
Bất chấp những gì tài liệu của Apple và cuốn sách tuyệt vời của Erica Sadun ( Tự động phân loại bố cục ) nói, có thể xem các không gian đồng đều mà không cần miếng đệm. Điều này rất đơn giản để thực hiện trong IB và mã cho bất kỳ số lượng phần tử nào bạn muốn để không gian đồng đều. Tất cả những gì bạn cần là một công thức toán học gọi là "công thức phần". Nó đơn giản để làm hơn là để giải thích. Tôi sẽ làm hết sức mình bằng cách chứng minh điều đó trong IB, nhưng nó cũng dễ thực hiện bằng mã.
Trong ví dụ trong câu hỏi, bạn sẽ
1) bắt đầu bằng cách đặt từng nhãn để có một ràng buộc trung tâm. Điều này rất đơn giản để làm. Chỉ cần kiểm soát kéo từ mỗi nhãn xuống dưới cùng.
2) Giữ phím shift, vì bạn cũng có thể thêm các ràng buộc khác mà chúng tôi sẽ sử dụng, cụ thể là "không gian dưới cùng cho hướng dẫn bố cục dưới cùng".
3) Chọn "hướng dẫn bố trí không gian từ dưới lên dưới" và "trung tâm theo chiều ngang trong container". Làm điều này cho cả 3 nhãn.
Về cơ bản, nếu chúng ta lấy nhãn có tọa độ mà chúng ta muốn xác định và chia nó cho tổng số nhãn cộng với 1, thì chúng ta có một số chúng ta có thể thêm vào IB để có được vị trí động. Tôi đang đơn giản hóa công thức, nhưng bạn có thể sử dụng nó để đặt khoảng cách ngang hoặc cả dọc và ngang cùng một lúc. Nó siêu mạnh!
Dưới đây là số nhân của chúng tôi.
Nhãn1 = 1/4 = 0,25,
Nhãn2 = 2/4 = .5,
Nhãn3 = 3/4 = .75
(Chỉnh sửa: @Rivera nhận xét rằng bạn chỉ cần sử dụng các tỷ lệ trực tiếp trong trường số nhân và xCode để thực hiện phép toán!)
4) Vì vậy, hãy chọn Label1 và chọn ràng buộc dưới cùng. Như thế này:
5) Chọn "Mục thứ hai" trong Trình theo dõi thuộc tính.
6) Từ trình đơn thả xuống, chọn "Đảo ngược mục thứ nhất và mục thứ hai".
7) Không có giá trị hằng số và giá trị wC hAny. (Bạn có thể thêm một phần bù ở đây nếu bạn cần).
8) Đây là phần quan trọng: Trong trường số nhân thêm số nhân đầu tiên của chúng tôi 0,25.
9) Trong khi bạn ở đó, đặt "Mục đầu tiên" hàng đầu thành "CenterY" vì chúng tôi muốn tập trung nó vào trung tâm y của nhãn. Đây là cách tất cả những gì nên nhìn.
10) Lặp lại quy trình này cho mỗi nhãn và cắm vào hệ số nhân có liên quan: 0,5 cho Nhãn2 và 0,75 cho Nhãn3. Đây là sản phẩm cuối cùng trong tất cả các định hướng với tất cả các thiết bị nhỏ gọn! Siêu đơn giản. Tôi đã xem xét rất nhiều giải pháp liên quan đến các đoạn mã và bộ đệm. Đây là giải pháp tốt nhất mà tôi từng thấy về vấn đề này.
Cập nhật: @kraftydevil cho biết thêm Hướng dẫn bố cục dưới cùng chỉ xuất hiện trong bảng phân cảnh, không xuất hiện trong xibs. Sử dụng 'Không gian dưới cùng để chứa' trong xibs. Nắm bắt tốt!