Я борюсь с этим все утро и, похоже, не могу найти решение. Я создал UIImageView
, наполнил его красным, затем добавил его в UIScrollView
и установил contentSize
размером UIImageView
. Если я напечатаю contentOffset
, я вижу (0, 0)
, и если я напечатаю contentSize
и UIImageView.frame.size
, они будут такими же, но красное «изображение» всегда оказывается меньше, чем scrollView
считает contentSize
.Невозможно правильно настроить UIScrollView (смещение сверху)
Если я прокручиваю весь путь до вершины, я вижу голубую полосу около 100 пикселей выше красного изображения, а полоса прокрутки не будет полностью соответствовать вершине того, что я считаю верхней частью моего вида прокрутки быть. Хотя верхняя часть полосы прокрутки совпадает с верхней частью моего красного окна, похоже, что представление прокрутки путается относительно того, где она на самом деле живет. Или, скорее всего, я запутался
IMG http://i64.tinypic.com/33mwewj.png
Вот мой, что кажется очень простой код ...
imgHorizon = UIImage.init(named:"horizon")!
imgBezel = UIImage.init(named:"bezel_transparent")!
imgWings = UIImage.init(named:"wings_transparent")!
imgViewHorizon = UIImageView.init()
imgViewBezel = UIImageView.init()
imgViewWings = UIImageView.init()
svHorizon = UIScrollView.init()
super.init(coder: aDecoder)
imgViewHorizon = UIImageView(frame: CGRect(x: 0, y: 0, width: imgBezel.size.width, height: imgHorizon.size.height))
imgViewHorizon.backgroundColor = UIColor.red
imgViewBezel = UIImageView(frame: CGRect(x: 0, y: 0, width: imgBezel.size.width, height: imgBezel.size.height))
imgViewBezel.contentMode = UIViewContentMode.center
imgViewBezel.clipsToBounds = true
imgViewBezel.image = imgBezel
imgViewWings = UIImageView(frame: CGRect(x: 0, y: 0, width: imgBezel.size.width, height: imgBezel.size.height))
imgViewWings.contentMode = UIViewContentMode.center
imgViewWings.clipsToBounds = true
imgViewWings.image = imgWings
svHorizon = UIScrollView(frame: CGRect(x: 0, y: 0, width: imgBezel.size.width, height: imgBezel.size.width))
svHorizon.contentSize = CGSize(width: imgBezel.size.width, height: imgHorizon.size.height)
svHorizon.contentMode = UIViewContentMode.scaleToFill
svHorizon.bounces = false
svHorizon.backgroundColor = UIColor.cyan
svHorizon.contentOffset = CGPoint(x: 0, y: 0)
svHorizon.addSubview(imgViewHorizon)
addSubview(svHorizon)
addSubview(imgViewBezel)
addSubview(imgViewWings)
Для быстрой диагностики, пожалуйста, скажите, где вы написали этот код в 'ViewController'? В «Attributes Inspector» вашего «ViewController» снимите флажок «Настроить прокрутки». – Adeel
Я написал его в классе, который наследуется от UIView. Этот код находится в методе 'required init? (Coder aDecoder: NSCoder)'. В интерфейсе builder я удалил UIView на моем контроллере view и установил класс в свой собственный класс. – lusher00
Переопределите метод 'layoutSubviews' и установите рамки ваших' imageViews'. Вы сняли флажок «Настроить прокрутки»? – Adeel