2016-03-21 17 views
6

Dự án tôi đã bắt đầu trợ giúp không sử dụng Bố cục Tự động trước đây và tôi đang cập nhật nó để sử dụng các lớp Kích thước và Bố cục Tự động. Có rất nhiều mã thao tác khung trong suốt ứng dụng (ví dụ: thiết lập khung trực tiếp thay vì thay đổi hằng số ràng buộc) và tôi tự hỏi điều này ảnh hưởng như thế nào đến chế độ xem được thiết lập với các ràng buộc Bố cục tự động.Nếu chế độ xem được thiết lập bằng IB với Bố cục tự động, điều gì sẽ xảy ra nếu bạn cố gắng thay đổi khung của nó theo lập trình?

Tôi đang làm việc với các phần thay đổi khung của mã và thay đổi nó để cập nhật các hằng số ràng buộc khi cần thiết, nhưng vì tôi chưa quen 100% với mọi phần mã hoạt động như thế nào, nó ' d là hữu ích để hiểu rõ hơn về cách bố cục tự động và thay đổi khung được mã hóa có thể ảnh hưởng lẫn nhau để nếu chế độ xem không xuất hiện đúng vào thời gian chạy, tôi có thể xác định tốt hơn nếu đó là thứ tôi đã thiết lập hoặc có thể là một đoạn mã cũ ở đâu đó cần được tìm thấy và cập nhật.

+2

Thông thường, thay đổi sẽ hoạt động cho đến khi bố cục tiếp theo khi khung được đặt lại thành khung được xác định bởi các ràng buộc. Đôi khi bố cục diễn ra ngay lập tức để thay đổi không thực sự hiển thị. – Sulthan

+0

nếu bạn đang thực hiện rất nhiều thao tác khung trên một chế độ xem sử dụng tính năng tự động điền, điều này có thể là một mớ hỗn độn. tôi đã từng có nhiệm vụ như vậy và hầu hết mã không làm gì cả (khi cố gắng thay đổi khung), thời gian chạy đã bỏ qua hầu hết các hoạt động trên khung. – azimov

+0

@Sulthan, điều đó có ý nghĩa rất nhiều khi suy nghĩ lại về một số kết quả kỳ lạ mà tôi đã nhận được ở lần. Cảm ơn! – bluewraith

Trả lời

8

Rất đơn giản. Bạn chỉ cần hiểu bố cục tự động .

Đây là cách hoạt động. Các ràng buộc chỉ là một danh sách các hướng dẫn; họ không, của chính họ, thực sự làm bất cứ điều gì cả. Có một thông báo hệ thống layoutSubviews, được gửi vào khoảnh khắc bạn không kiểm soát - vì vậy bạn nên tưởng tượng nó có thể được gửi bất cứ lúc nào. Khi layoutSubviews thực sự được gửi, các ràng buộc được tham khảo và tuân thủ (bằng cách thực hiện chính xác những gì bạn sẽ làm - tức là thời gian chạy đặt frame hoặc boundscenter, của mỗi chế độ xem).

Vì vậy, bạn có thể tự do thay đổi frame của một cái nhìn, nhưng lưu ý rằng nếu layoutSubviews được gửi và các khó khăn không đồng ý với frame mà bạn thiết lập, quan điểm sẽ nhảy trở lại nơi mà những hạn chế nói để đưa nó.

+0

Hoàn hảo, cảm ơn bạn! Điều này giải thích một số kết quả sơ sài mà tôi đã nhận được trong một số trường hợp. – bluewraith

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