gpt4 book ai didi

ios - 第一次应用约束时的意外行为

转载 作者:行者123 更新时间:2023-12-04 07:37:41 26 4
gpt4 key购买 nike

我想更改相对于设备方向的布局和约束。
这是我如何实现它:

override func viewDidLoad() {
super.viewDidLoad()

setupViews()
addViews()
constraintSubviews()
}
func constraintSubviews() {
if UIDevice.current.orientation.isPortrait {
NSLayoutConstraint.activate(portraitConstrains)
NSLayoutConstraint.deactivate(landscapeConstrains)
NSLayoutConstraint.activate(nowPlayingView.portraitConstrains)
NSLayoutConstraint.deactivate(nowPlayingView.landscapeConstrains)



} else {
NSLayoutConstraint.deactivate(portraitConstrains)
NSLayoutConstraint.activate(landscapeConstrains)
NSLayoutConstraint.activate(nowPlayingView.landscapeConstrains)
NSLayoutConstraint.deactivate(nowPlayingView.portraitConstrains)

}
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
constraintSubviews()
}
这是我运行代码时的结果:
enter image description here
这就是我所期望的:
enter image description here
除非我更改一次设备方向,否则我无法获得我在代码中设计的布局。
enter image description here
更好的实现
我在互联网上进行了搜索,我发现的最好的事情就是这个实现。关于这个主题有更好的实现吗?

最佳答案

你需要
1- 激活前先停用

func constraintSubviews() {
if UIDevice.current.orientation.isPortrait {
NSLayoutConstraint.deactivate(landscapeConstrains)
NSLayoutConstraint.deactivate(nowPlayingView.landscapeConstrains)
NSLayoutConstraint.activate(nowPlayingView.portraitConstrains)
NSLayoutConstraint.activate(portraitConstrains)
} else {
NSLayoutConstraint.deactivate(portraitConstrains)
NSLayoutConstraint.deactivate(nowPlayingView.portraitConstrains)
NSLayoutConstraint.activate(landscapeConstrains)
NSLayoutConstraint.activate(nowPlayingView.landscapeConstrains)
}
}
2- 更换
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
constraintSubviews()
}
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.willTransition(to: size, with: coordinator)
constraintSubviews()
}

关于ios - 第一次应用约束时的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67653202/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com