Используем UIScrollView
Для использования UIScrollView обязательно нужно задать область, которая будет «скролится». Задается это свойством экземпляра UIScrollView:
// // proSwift.ru // scrollView.contentSize = CGSize(width: 1500, height: 1500)
Все дальнейшее добавляем уже внепосредстваенно в scrollView:
// // proSwift.ru // scrollView.contentSize = CGSize(width: 1500, height: 1500) let someView = UIView() someView.frame = CGRect(x: 1000, y: 1000, width: 20, height: 30) scrollView.addSubview(someView)
Обратите внимание, что для задания позиции someView мы используем координаты scrollView.contentSize
Таким образом, получается что UIScrollView — это окно, через которое можно просмотреть contentSize
Очень полезное свойство для нахождения верхней левой точки UIScrollView:
// // proSwift.ru // let upperLevtOfVisible: CGPoint = scrollView.contentOffset
Также мы можем увидеть прямоугольник, который в данный момент показывает UIScrollView:
// // proSwift.ru // let visibleRect: CGRect = someView.convertRect(scrollView.bounds, fromView: scrollView) println("\(scrollView.bounds)") println("\(someView.convertRect(scrollView.bounds, fromView: scrollView))")
В этих строках кода есть хитрость: convertRect(). Эта функция конвертирует координаты одного view в систему координат другого view.
Вызов двух последних строк показывает параметры CGRect в различных системах координат:
(0.0, 0.0, 375.0, 667.0) — координаты visibleRect относительно scrollView
(-100.0, -100.0, 375.0, 667.0) — координаты visibleRect относительно someView
Итак, для того чтобы поместить что-то большое в UIScrollView нужно выполнить следующее, и не забыть задать contentSize
// // proSwift.ru // let image = UIImage(named: "bigimage.jpg") let imageView = UIImageView(image: image) scrollView.addSubview(imageView) scrollView.contentSize = imageView.bounds.size
Дополнительны методы:
Программно проскролить к прямоугольнику:
// // proSwift.ru // scrollView.scrollRectToVisible(CGRect, animated: Bool)
Зумминг:
Приближение и отдаление не будет работать пока не будут заданы параметры:
// // proSwift.ru // scrollView.minimumZoomScale = 0.2 // 20 % от нормального размера scrollView.maximumZoomScale = 3.0 // увеличение втрое от нормального размера
Также обязательно нужно задать метод делегата, с помощью которого указать какое именно view мы будем зуммить
// // proSwift.ru // func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView?
Программно задать зум можно следующими свойствами и методами scrollView:
// // proSwift.ru // var zoomScale: CGFloat func setZoomScale(CGFloat, animated: Bool) func zoomToRect(CGRect, animated: Bool)
Добавить комментарий