Как изменить индекс z или порядок стека UIView?
Я собрал UIView поверх существующего контроллера, чтобы создать слой градиента. Однако, когда я загружаю представление, новый UIView (естественно) находится поверх всего.
Соответствующий код:
class ViewController: UIViewController {
@IBOutlet weak var myGradientView: GradientView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidLayoutSubviews() {
self.myGradientView.gradientWithColors(UIColor.whiteColor(), UIColor.blueColor())
}
}
Я сделал несколько поисков, и я нашел ответ в Objective-C, который объясняет, как использовать:
[parentView bringSubviewToFront: view];
Я не знаю objective-c и довольно новичок в Swift, если бы кто-то мог пролить свет на это, я был бы признателен.
Мой вопрос:
Как изменить индекс z или порядок стека UIView в Swift?
Ответы
Ответ 1
Я бы порекомендовал посмотреть в UIView
documentation, где перечислены несколько методов для управления порядком subviews:
bringSubviewToFront(_:)
sendSubviewToBack(_:)
removeFromSuperview()
insertSubview(_:atIndex:)
insertSubview(_:aboveSubview:)
insertSubview(_:belowSubview:)
exchangeSubviewAtIndex(_:withSubviewAtIndex:)
В вашей ситуации вы можете попробовать:
self.view.sendSubviewToBack(myGradientView)
// self is your view controller in this case.
В качестве альтернативы, поскольку вы создали myGradientView
в IB, вы можете изменить иерархию представления, чтобы изменить, какие представления отображаются сверху. Вот изображение, иллюстрирующее:
![enter image description here]()
Надеюсь, что это поможет.
Ответ 2
приведенный ответ
bringSubviewToFront(_:)
sendSubviewToBack(_:)
изменилось:
В Swift 3.0
view.sendSubview(toBack:yourUIView)
view.bringSubview(toFront:yourUIView)