UIScrollView не показывает правильное расстояние

Я создаю очень простое подробное представление, в котором есть несколько изображений, которые пользователь может пролистать вверху, а некоторые сведения о названии элемента внизу. Однако мое прокручиваемое представление не отображается в нужном месте, так:

Рамка моего прокрутки и рамка его подпредставлений установлены следующим образом:

override func viewDidLoad() {
    super.viewDidLoad()

    self.pictures.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height / CGFloat(2))
    self.pictures.clipsToBounds = false
    let width = pictures.frame.width
    let height = pictures.frame.height



    /*

    let view1 = UIView(frame: CGRectMake(pictures.frame.origin.x, 0, scrollViewWidth, scrollViewHeight))
    let view2 = UIView(frame: CGRectMake(pictures.frame.origin.x + scrollViewWidth, 0, scrollViewWidth, scrollViewHeight))
    let view3 = UIView(frame: CGRectMake(pictures.frame.origin.x + scrollViewWidth * 2, 0, scrollViewWidth, scrollViewHeight))
    let view4 = UIView(frame: CGRectMake(pictures.frame.origin.x + scrollViewWidth * 3, 0, scrollViewWidth, scrollViewHeight))

    */

    for index in 0...2 {
        let frame = CGRectMake(width * CGFloat(index), 0, width, height)
        let view = UIView(frame: frame)
        views.append(view)
        pictures.addSubview(view)
    }

    views[0].backgroundColor = UIColor.redColor()
    views[1].backgroundColor = UIColor.blueColor()
    views[2].backgroundColor = UIColor.orangeColor()


    pictures.delegate = self
    pictures.contentSize = CGSizeMake(width * CGFloat(views.count), height)


}

У кого-нибудь есть предложения относительно того, как я мог бы соответствовать этому? Я неправильно внедряю свой scrollview?

2 ответа

Проблема в том, что вы пытаетесь получить доступ self.view.frame в viewDidLoad() функция. В тот момент, когда он называется, взгляды еще не выложены должным образом. Фрейм представления будет того размера, который вы указали в раскадровке, вероятно, {0, 0, 600, 600}.

Решение: Вы можете поместить свой код инициализации страницы в viewWillAppearили вы можете рассмотреть возможность использования автоматической компоновки вместо непосредственного управления кадрами.

Вы должны добавить +20 к вашей ширине, потому что в scrollView некоторое пространство доступно между двумя страницами. Поэтому добавьте 20, это может решить вашу проблему.

Другие вопросы по тегам