Gửi theo chương trình tới các phần tử trước / sau được tạo từ trình tạo giao diện


84

Trong xây dựng giao diện, có những lựa chọn bố trí để gửi để sao lưu hoặc gửi tới phía trước bất kỳ yếu tố như UIButton, UIImage, UILabelvv ...

Bây giờ, tôi muốn làm điều tương tự trong thời gian chạy, theo chương trình.

Có một cách dễ dàng để làm điều đó?

Tôi không muốn tạo các khung nhìn khác nhau, chỉ cần cập nhật trục z.

Câu trả lời:


192

Có một số phương pháp UIViewcho phép bạn sửa đổi hệ thống phân cấp chế độ xem.

Vì các chế độ xem của bạn đã được chèn vào superview, bạn có thể dễ dàng gọi bringSubviewToFront:một lần cho mỗi chế độ xem theo bất kỳ thứ tự nào bạn muốn.


Bạn đang nói rằng tôi không thể gửi trực tiếp UIButton tới front / back? Tôi phải tạo một dạng xem và thêm nó vào dạng xem đó. Sau đó sử dụng các phương pháp trên? Nếu vậy, lớp điều khiển có phải là nơi để tạo một dạng xem như vậy không?
Yohann T.

11
UIButton là một lớp con của UIView. Chỉ cần gọi: [[myButton superview] bringSubviewToFront: myButton];
Sebastian Celis

Chỉ để xóa một nghi ngờ nhỏ mà tôi đã có: nếu bạn chèn một chế độ xem phụ đã có trong hệ thống phân cấp chế độ xem, Hệ điều hành sẽ chỉ di chuyển vị trí của nó. Vì vậy, việc chèn miễn là chế độ xem tồn tại sẽ không gây ra bất kỳ chi phí nào.
olivaresF

"gọi bringSubviewToFront:một lần cho mỗi lượt xem theo bất kỳ thứ tự nào bạn thích" đó thực sự là một mẹo nhỏ. Tốt.
Trả lời

43

Bạn đã có thể sử dụng:

[self.view bringSubviewToFront:myButton];
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.