Đúng, st3fan nói đúng , thuộc tính contentSize của UIScrollView phải được đặt. Nhưng bạn không nên tắt tự động thanh toán cho mục đích này. Bạn có thể dễ dàng thiết lập ContentSize của UIScrollView chỉ với tính năng tự động thanh toán trong IB mà không cần bất kỳ mã nào.
Điều quan trọng cần hiểu là khi sử dụng autolayout contentSize của UIScrollView không được đặt trực tiếp, nó được tính toán dựa trên các ràng buộc của tất cả các subview của UIScrollView. Và tất cả những gì bạn cần là cung cấp các ràng buộc thích hợp cho các lượt xem phụ cho cả hai hướng.
Ví dụ: nếu bạn chỉ có một chế độ xem phụ, bạn có thể đặt chiều cao và không gian của nó từ trên xuống dưới thành superview (tức là scrollView trong trường hợp của chúng tôi) contentSize.height được tính bằng tổng
Vertical Space (aSubview.top to Superview.top) + aSubview.height + Vertical Space (aSubview.top to Superview.top)
contentSize.width được tính toán tương tự từ các ràng buộc ngang.
Nếu có quá ít ràng buộc để tính toán kích thước phù hợp, nút nhỏ màu đỏ được hiển thị gần mục View Controller Scene để thông báo về sự không rõ ràng về bố cục.
Nếu có nhiều lượt xem phụ thì đó có thể là "chuỗi" ràng buộc: lượt xem phụ trên cùng đến trên cùng, chiều cao và khoảng cách giữa các lượt xem phụ và lượt xem phụ từ dưới cùng xuống dưới như trong câu trả lời của Danyal Aytekin .
Nhưng trên thực tế trong hầu hết các trường hợp, sẽ thuận tiện hơn khi chỉ cần thêm một chế độ xem trống với kích thước cần thiết và đặt khoảng trắng lên trên, trái, dưới, phải của scrollView thành 0.
Bạn có thể sử dụng chế độ xem này làm "Chế độ xem nội dung" tức là đặt tất cả các chế độ xem phụ khác trên đó hoặc nếu bạn đã có nhiều chế độ xem phụ và không muốn di chuyển chúng và thiết lập lại bố cục, bạn có thể thêm chế độ xem bổ trợ này vào các chế độ xem phụ hiện có và ẩn nó đi.
Để làm cho nội dung tính toán có thể cuộn được scrollView, Kích thước phải lớn hơn kích thước scrollView.