2016-11-02 4 views
2

Я пытаюсь добавить некоторые объекты UIView в качестве подзадач в UIScrollView и дать им случайный цвет. Но эти фоновые цвета UIView - белые. Почему я не могу установить свой backgroundColor?Не удается установить backgroundColor UIView, который является подзадачей UIScrollView в Swift

Я запускаю этот проект на iOS 10.1, Swift 3.0.1 и SnapKit 3.0.2. Вот код в viewDidLoad:

let scrollView = UIScrollView.init() 
scrollView.isPagingEnabled = true 

self.view.addSubview(scrollView) 
scrollView.snp.makeConstraints { (make) in 
    make.left.right.top.bottom.equalTo(self.view) 
} 

var lastView: UIView? = nil 
for i in 0 ..< 5 { 
    let colorView = UIView.init() 
    let red = CGFloat(arc4random() % 256)/255.0 
    let blue = CGFloat(arc4random() % 256)/255.0 
    let green = CGFloat(arc4random() % 256)/255.0 
    colorView.backgroundColor = UIColor.init(red: red, green: green, blue: blue, alpha: 1.0) 
    scrollView.addSubview(colorView) 

    colorView.snp.makeConstraints({ (make) in 
     make.top.bottom.equalTo(scrollView) 
     make.width.equalTo(scrollView) 

     if i == 0 { 
      make.left.equalTo(scrollView) 
     } 
     else { 
      make.left.equalTo((lastView?.snp.right)!) 
     } 

     if i == 4 { 
      make.right.equalTo(scrollView) 
     } 
    }) 
    lastView = colorView 
} 

Я думаю, что проблема в том, что backgroundColor из scrollView будет охватывать на `ColorView».

+0

Какова позиция и размер поля зрения вы инициализации в то время как «пусть ColorView = UIView.init()» ? Я думаю, что это может быть проблема. Ваше представление не добавляется в прокрутку. –

+0

Не то, чтобы что-то не так с 'CGFloat (arc4random()% 256)/255.0', но вместо этого вы можете просто проверить с помощью .redColor()'? ... И вы уверены, что ограничения правильные? Я бы предположил, что это одна из двух вещей, а не возможность установить цвет bg ... Я не вижу ограничения по высоте. – Magoo

+0

@Nitesh Kumar Singh Спасибо. Я использую SnapKit для установки ограничений 'colorView'. Я очень уверен, что он добавлен в 'scrollView'. – songlebao

ответ

0

ли вы потенциально нужно добавить make.height.equalTo(scrollView) ... Я не вижу ограничение высоты ...

+0

Спасибо за ваш ответ. Но у меня есть эта строка кода 'make.top.bottom.equalTo (scrollView)', которая автоматически установит высоту равным scrollView – songlebao

+0

Вы правы. Я меняю 'make.top.bottom.equalTo (scrollView)' на 'make.top.height.equalTo (scrollView)' и проблема решена. [Роберт Пейн] (https://github.com/robertjpayne) в SnapKit указывает, что «правые и нижние атрибуты в представлениях прокрутки предназначены для получения границ прокрутки для работы». – songlebao

+0

Нет проблем, ограничения могут быть такими забавными. У меня есть подобная библиотека, и я нахожу такие вещи, как это происходит много. – Magoo

Смежные вопросы