вид прокрутки - макет программно - swift 3
Дорогие друзья: я надеюсь, что кто-то может пересмотреть этот проект и помочь мне до того, как мой мозг будет сожжен. Заранее спасибо.
Задача: Горизонтальная прокрутка - Макет массива из 4 изображений, квадрат 240 × 240 и 20 интервалов. Ограничения для представления прокрутки устанавливаются непосредственно в раскадровке, но подпредставления изображений были добавлены программно с использованием языка визуальных форматов. Размер содержимого для прокрутки предполагается выполненным с помощью этих ограничений.
Что я сделал: установил массив изображений, создал de ImageView программно и добавил массив, используя цикл for. Создайте ограничения, используя визуальный формат. Способ сделать это можно найти в этой статье: http://www.apeth.com/iOSBook/ch20.html.
Здесь ссылка на проект в GitHub
https://github.com/ricardovaldes/soloScrollEjercicio
Ограничения для ScrollView добавлены непосредственно в раскадровку.
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var myScroll: UIScrollView!
var carsArray = [UIImage]()
var constraints = [NSLayoutConstraint]()
override func viewDidLoad() {
super.viewDidLoad()
carsArray = [#imageLiteral(resourceName: "fasto1"), #imageLiteral(resourceName: "fasto2"), #imageLiteral(resourceName: "fasto3"), #imageLiteral(resourceName: "fasto4")]
var const = [NSLayoutConstraint]()
var views: [String: UIView]
var previous: UIImageView? = nil
for index in 0..<carsArray.count{
let newImageView = UIImageView()
newImageView.image = carsArray[index]
newImageView.translatesAutoresizingMaskIntoConstraints = false
myScroll.addSubview(newImageView)
self.myScroll.setNeedsLayout()
views = ["newImageView": newImageView, "myScroll": myScroll]
if previous == nil{
const.append(contentsOf: NSLayoutConstraint.constraints(withVisualFormat: "H:|[newImageView(240)]", metrics: nil, views: views))
}
else{
const.append(contentsOf: NSLayoutConstraint.constraints(withVisualFormat: "H:[previous]-20-[newImageView(240)]", metrics: nil, views: ["newImageView": newImageView, "previous": previous!]))
}
previous = newImageView
const.append(contentsOf: NSLayoutConstraint.constraints(withVisualFormat: "H:[previous]|", metrics: nil, views: ["previous": newImageView]))
const.append(contentsOf: NSLayoutConstraint.constraints(withVisualFormat: "V:|[newImageView(240)]|", metrics: nil, views: views))
}
NSLayoutConstraint.activate(const)
}
}
Несмотря на то, что я пробовал много комбинаций, у меня одна и та же ошибка:
2018-04-29 21: 24: 34.347466-0500 soloScrollEjercicio [12002: 1665919] [LayoutConstraints] Невозможно одновременно удовлетворить ограничения.