2013-03-17 29 views
5

Tôi có chế độ xem có chứa ba nhãn.Sử dụng Autolayout để căn giữa ba đối tượng

Nhãn đầu tiên được đặt ở trên cùng. Nhãn thứ ba được đặt cách đáy 50px.

Những gì tôi đang cố gắng làm luôn đặt nhãn thứ hai ở giữa hai người đó bằng cách sử dụng tính năng tự động trả lời nhưng tôi không thể biết cách thực hiện.

Vấn đề là nhãn thứ hai không nằm ở trung tâm của chế độ xem.

Tôi đã thử đặt hai giới hạn khoảng cách dọc thành ít hơn hoặc bằng giá trị ban đầu, nhưng nó không hoạt động.

Có thể thực hiện điều đó chỉ bằng tính năng tự động hoàn thành? Tôi đã nghĩ đến việc thêm một chế độ xem khác, nhưng điều đó không giống như một giải pháp tốt.

Cảm ơn bạn.

Trả lời

1

Tôi không nghĩ bạn có thể làm điều này với bố cục tự động; nhưng nó tầm thường để ghi đè layoutSubviews (hoặc viewDidLayoutSubviews nếu bạn không sử dụng lớp con UIView) để căn giữa nhãn 2 giữa nhãn 1 và nhãn 3 (chỉ cần đảm bảo gọi số [super layoutSubviews] trước).

EDIT: Dưới đây là một số mã mẫu.

- (void)layoutSubviews { 
    [super layoutSubviews]; 

    _label2.center = CGPointMake(_label2.center.x, (CGRectGetMaxY(_label1.frame) + CGRectGetMinY(_label3.frame))/2); 
} 
0

Câu trả lời khác của tôi tôi nghĩ là không chính xác. Tôi nghĩ cách dễ nhất để làm điều này là tạo ra một NSView giữ nhãn và nhãn thứ hai được đặt ở giữa nó. Câu trả lời trước của tôi giả định rằng khi hệ thống Autolayout cần chia tách không gian giữa các khung nhìn, nó sẽ làm điều đó như nhau, nhưng một số kiểm tra nhanh cho thấy nó không có.

Tôi không nghĩ rằng có thể nói rằng một không gian nhất định phải bằng với một không gian khác tại thời điểm này với Tự động điền.

Các vấn đề liên quan