Я создаю UIViewController, содержащий выгружаемый UIScrollView, который должен добавлять представления, созданные из StoryBoard.I'm, ссылающиеся на this article. В основном структураДобавление subviews в UIScrollview с подкачкой в Swift
- MyController
- UIScrollView
- subview
- subview
- ...
Это, как мой Раскадровки выглядит следующим образом:
Левая это часть моего основного зрения контроллера, который содержит Scrollview. Правильный - это контроллер просмотра «freeForm», который я использую для создания экземпляров отдельных страниц. Оба они имеют одинаковый размер.
Это код, я использую для главного контроллера:
import UIKit
class MainControllerVC: UIViewController {
@IBOutlet var tagsScrollview: UIScrollView!
var tagsPages:[UIViewController] = []
var frame: CGRect = CGRectMake(0,0,0,0)
override func viewDidLoad() {
super.viewDidLoad()
// generate tags view controller
for index in 0..<5 {
frame.origin.x = self.tagsScrollview.frame.size.width * CGFloat(index)
frame.size = self.tagsScrollview.frame.size
tagsScrollview.pagingEnabled = true
if let page:UIViewController = self.storyboard?.instantiateViewControllerWithIdentifier("tagsVC") as? UIViewController {
var delta = 0.2 * CGFloat(index)
page.view.frame = self.frame
page.view.backgroundColor = UIColor(red: 0.2 + delta, green: 0.2 + delta, blue: 0.2 + delta, alpha: 1.0)
self.tagsScrollview.addSubview(page.view)
tagsPages.append(page)
}
}
self.tagsScrollview.contentSize = CGSizeMake(self.tagsScrollview.frame.size.width * CGFloat(tagsPages.count), self.tagsScrollview.frame.size.height)
// Do any additional setup after loading the view.
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Я создаю несколько фиктивных страниц с различными цветами и центральной меткой, которая была помещена в центр с использованием автоматической компоновки.
В результате получается следующее:
Первая (темнее) страница подтаблица добавляется правильно на самом деле размер зрения и положение метки является то, что мы ожидаем. Однако второе представление страницы добавляется в неправильную позицию X. То же самое справедливо для следующих. В настоящее время я запускаю пример на симуляторе iPhone 6, и если я добавлю 89 точек к self.tagsScrollview.frame.size.width, когда я вычисляю размер кадра страницы и scrollview contentSize, проблема решена .... но только для iPhone6 !!! Похоже, что размер scrollview не является тем, что мы ожидаем, поскольку его недостаточно для создания в нем эквидистантных страниц.
Я подозреваю проблему автоматической компоновки, но не знаю, с чего начать.
Эта вещь сводит меня с ума. Любая помощь могла бы быть полезна.