Ответ 1
Вы можете сделать это, используя safe area layout guide
и получить дополнительную информацию, используя ссылку:
Вы также можете сделать это без безопасной области: я подготовил демо для вас и в этой демонстрации, у нас есть три контроллера вида, добавленных в прокрутку, и просмотр прокрутки добавляется в другой контроллер представления (ContainerViewController
)
ContainerViewController
:
import UIKit
class ContainerViewController: UIViewController, UIScrollViewDelegate {
@IBOutlet weak var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let V1 = self.storyboard?.instantiateViewController(withIdentifier: "first")
self.addChildViewController(V1!)
self.scrollView.addSubview(V1!.view)
V1?.didMove(toParentViewController: self)
V1?.view.frame = scrollView.bounds
let V2 = self.storyboard?.instantiateViewController(withIdentifier: "second")
self.addChildViewController(V2!)
self.scrollView.addSubview(V2!.view)
V2?.didMove(toParentViewController: self)
V2?.view.frame = scrollView.bounds
let V3 = self.storyboard?.instantiateViewController(withIdentifier: "third")
self.addChildViewController(V3!)
self.scrollView.addSubview(V3!.view)
V3?.didMove(toParentViewController: self)
V3?.view.frame = scrollView.bounds
var V1Frame: CGRect = V1!.view.frame
V1Frame.origin.y = 0
V1?.view.frame = V1Frame
var V2Frame: CGRect = V2!.view.frame
V2Frame.origin.y = (self.view.frame.height)
V2?.view.frame = V2Frame
var V3Frame: CGRect = V3!.view.frame
V3Frame.origin.y = (self.view.frame.height)*2
V3?.view.frame = V3Frame
}
override func viewDidLayoutSubviews() {
scrollView.contentSize = CGSize(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height*3)
}
}
Примечание. Удалите ограничение сверху и снизу из безопасной области и добавьте их из
SuperView
(для просмотра прокрутки, InnerView (FirstVC, SecondVC, ThirdVC)).
Вы можете проверить все функциональные возможности и ограничения демонстрационного проекта. URL-адрес загрузки: https://www.dropbox.com/s/4ovfqmrtwt2i8yi/StackOverflow.zip?dl=0
Я тестировал демо в iPhoneX
и iPhone6
и iPhone8+
Скриншоты ниже: