2015-07-01 2 views
0

установки:iOS8: viewDidLayoutSubviews() скрывает элементы в раскадровки Auto-Layout

У меня есть мнение контроллер, состоящий из View и Container View.

У меня есть View и Container View с использованием размеров классов.

ниже код добавляет градиент просто отлично:

class ViewController: UIViewController { 


    @IBOutlet weak var graphView: UIView! 
    @IBOutlet weak var containerView: UIView! 
    let backgroundColor = CAGradientLayer().graphViewBackgroundColor() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    override func viewDidLayoutSubviews() { 

     super.viewDidLayoutSubviews() 
     backgroundColor.frame = self.graphView.bounds 
     self.graphView.layer.addSublayer(backgroundColor) 

    } 
} 

Выход:

enter image description here

Там нет ограничений, изложенных в коде.

Проблема:

Однако, у меня есть ярлык с черным фоном, который не появляется. Если я закомментируйте следующие строки, появляется метка:

//backgroundColor.frame = self.graphView.bounds 
    //self.graphView.layer.addSublayer(backgroundColor) 

Выход:

enter image description here

Вопрос:

Почему градиент скрывается элемент UILabel, который в Auto-layout?

ответ

1

Вы пробовали принести ярлык спереди?

graphView.bringSubviewToFront(label)

+0

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

+0

Да, вместо 'bringSubviewToFront' вы можете сделать' sendSubviewToBack' – Sean

+0

'self.view .sendSubviewToBack (self.graphView)'? не работает – user1107173

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