Изображения не вписываются в UIScrollView - PullRequest
0 голосов
/ 08 октября 2018
class ViewController: UIViewController, UIScrollViewDelegate, UICollectionViewDelegate, UICollectionViewDataSource {
    @IBOutlet weak var pageControl: UIPageControl!
    @IBOutlet weak var scrollView: UIScrollView!

    var images: [String] = ["promotion test 1", "promotion test 2", "promotion test 3", "promotion test 4", "promotion test 5", "promotion test 6"]
    var frame = CGRect(x: 0, y: 0, width: 0, height: 0)
}


pageControl.numberOfPages = images.count
for index in 0..<images.count {
    frame.origin.x = scrollView.frame.size.width * CGFloat(index)
    frame.size = scrollView.frame.size

    let imgView = UIImageView(frame: frame)
    imgView.image = UIImage(named: images[index])
    self.scrollView.addSubview(imgView)
}
scrollView.contentSize = CGSize(width: (scrollView.frame.size.width * CGFloat(images.count)), height: scrollView.frame.size.height)
scrollView.delegate = self

This is a screenshot of my problem

Изображения меньше, чем прокрутка.Поэтому, когда я вижу первую страницу вида с прокруткой, я могу видеть некоторую часть изображения на следующем виде с прокруткой.Я не знаю, что изменить в моем коде.Подскажите, пожалуйста, что я должен изменить?

1 Ответ

0 голосов
/ 08 октября 2018

Проблема в том, что вы ссылаетесь на такие значения, как scrollView.frame.Если вы сделаете это в то время, когда кадр представления прокрутки еще не известен - например, в viewDidLoad - вы получите неправильный ответ.Отложите этот код на время, когда кадр представления прокрутки известен .

(Возможно, даже лучше, просто избавьтесь от всего этого кода и используйте вместо этого UIPageViewController. Он делает все, что вам нужно »здесь, автоматически, и, вероятно, делает это намного лучше, чем вы собираетесь делать «вручную».)

...