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, это может решить вашу проблему.