Các thành viên, tôi gặp sự cố với AutoLayout trong Interface Builder (Xcode 5 / iOS 7). Nó rất cơ bản và quan trọng vì vậy tôi nghĩ mọi người nên biết cách hoạt động của nó. Nếu đây là một lỗi trong Xcode, thì đây là một lỗi nghiêm trọng!
Vì vậy, bất cứ khi nào tôi có một hệ thống phân cấp xem như thế này, tôi gặp rắc rối:
>UIViewController
>> UIView
>>>UIScrollView
>>>>UILabel (or any other comparable UIKit Element)
UIScrollView có các ràng buộc vững chắc, ví dụ: 50 px từ mọi phía (không có vấn đề gì). Sau đó, tôi thêm một ràng buộc Không gian hàng đầu vào UILabel (không có vấn đề gì) (và tôi thậm chí có thể ghim chiều cao / chiều rộng của nhãn, không thay đổi gì, nhưng không nên xử lý do kích thước nội tại của Nhãn)
Rắc rối bắt đầu khi tôi thêm một ràng buộc theo dõi vào UILabel:
Ví dụ: Trailing Space to: Superview Bằng: 25
Bây giờ có hai cảnh báo xảy ra - và tôi không hiểu tại sao:
A) Sự mơ hồ về kích thước nội dung có thể cuộn (Chế độ xem cuộn có chiều cao / chiều rộng nội dung có thể cuộn mơ hồ)
B) Lượt xem bị đặt sai (Nhãn dự kiến: x = -67 Thực tế: x = 207
Tôi đã làm ví dụ tối thiểu này trong một dự án mới mà bạn có thể tải xuống và tôi đã đính kèm một ảnh chụp màn hình. Như bạn có thể thấy, Trình tạo giao diện hy vọng Nhãn sẽ nằm ngoài ranh giới của UIScrollView (hình chữ nhật nét đứt màu cam). Cập nhật khung của Nhãn bằng Công cụ giải quyết vấn đề sẽ di chuyển nó ngay tại đó.
Xin lưu ý: Nếu bạn thay thế UIScrollView bằng UIView, hành vi sẽ như mong đợi (khung của Nhãn là chính xác và theo ràng buộc). Vì vậy, dường như có một vấn đề với UIScrollView hoặc tôi đang bỏ lỡ điều gì đó quan trọng.
Khi tôi chạy Ứng dụng mà không cập nhật khung của Nhãn như được đề xuất bởi IB, nó được đặt ở vị trí tốt, chính xác là vị trí của nó và UIScrollView có thể cuộn được. Nếu tôi cập nhật khung, Nhãn sẽ khuất tầm nhìn và UIScrollView không cuộn.
Giúp tôi Obi-Wan Kenobi! Tại sao bố trí mơ hồ? Tại sao quan điểm không đúng chỗ?
Bạn có thể tải xuống dự án mẫu tại đây và thử xem bạn có thể biết chuyện gì đang xảy ra không: https://github.com/Wirsing84/AutoLayoutPro Hiệu
UIScrollView
trực tiếp. Thay vì sử dụng UICollectionView
hoặc UITableView
càng nhiều càng tốt, hầu hết mọi thứ đều có thể với các yếu tố này và nó cũng mang lại sự đơn giản, dễ đọc và tái sử dụng !!!