切换到横向时,Tableview 将约束更改为全屏
Posted
技术标签:
【中文标题】切换到横向时,Tableview 将约束更改为全屏【英文标题】:Tableview change constraints to full screen when switch to landscape 【发布时间】:2018-11-22 04:02:03 【问题描述】:基本上,我有一个表格视图,当我切换到横向时,我希望它将表格视图设置为全屏,当我将其切换回纵向时,它应该恢复为默认约束。如果我删除断点,它会起作用。
但是,当我将其从横向切换回纵向时,它不会恢复为默认值。当我将它切换回纵向时,我正在编辑它的约束以执行我想要的操作。但是,我对其他解决方案持开放态度。请告诉我我应该怎么做。我使用UIViewAlertForUnsatisfiableConstraints
添加了断点,就像这张图片一样:
override func viewDidLoad()
super.viewDidLoad()
parseData(noOfPosts:90)
TableView.delegate = self
TableView.dataSource = self
TableView.tableFooterView = UIView()
let myTop2Constraint:NSLayoutConstraint = TableView.topAnchor.constraint(equalTo: view.topAnchor, constant: 50)
let myBtm2Constraint:NSLayoutConstraint = TableView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 50)
myTop2Constraint.isActive = true
myBtm2Constraint.isActive = true
if(UIDevice.current.orientation.isLandscape)
myTop2Constraint.isActive = false
myBtm2Constraint.isActive = false
override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator)
let myTop2Constraint:NSLayoutConstraint = TableView.topAnchor.constraint(equalTo: view.topAnchor, constant: 50)
let myBtm2Constraint:NSLayoutConstraint = TableView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 50)
let myTopConstraint:NSLayoutConstraint = TableView.topAnchor.constraint(equalTo: view.topAnchor, constant: 0)
let myBtmConstraint:NSLayoutConstraint = TableView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0)
myTopConstraint.isActive = false
myBtmConstraint.isActive = false
myTop2Constraint.isActive = false
myBtm2Constraint.isActive = false
if(UIDevice.current.orientation.isLandscape)
self.catIsuSemasa.isHidden = true
self.catOthers.isHidden = true
self.catSocial.isHidden = true
self.catPolitics.isHidden = true
if(myTop2Constraint.isActive)
print("error1?")
myTop2Constraint.isActive = false
print("error2?")
myBtm2Constraint.isActive = false
print("error3?")
myTopConstraint.isActive = true
myBtmConstraint.isActive = true
else
TableView.removeAllConstraints()
myTopConstraint.isActive = true
myBtmConstraint.isActive = true
else
self.catIsuSemasa.isHidden = false
self.catOthers.isHidden = false
self.catSocial.isHidden = false
self.catPolitics.isHidden = false
if(myTopConstraint.isActive)
print("error")
myTopConstraint.isActive = false
print("error2")
myBtmConstraint.isActive = false
print("error3")
myTop2Constraint.isActive = true
print("error4")
myBtm2Constraint.isActive = true
print("run?")
extension UIView
func removeAllConstraints()
self.removeConstraints(self.constraints)
for view in self.subviews
view.removeAllConstraints()
【问题讨论】:
为什么以编程方式设置约束,您可以通过情节提要使用大小类(因特征而异)来做到这一点? this link 可能会帮助您在情节提要中为横向和纵向设置不同的约束。 我正在调查,谢谢指点 @JatinKathrotiya 嘿,感谢您为我指明了正确的方向,我设法使用可变特性解决方案来解决我的问题。如果您将其发布为答案的评论,则将使其成为解决方案 最欢迎,我添加为答案,以便对其他用户有帮助 【参考方案1】:应用程序支持横向和纵向,那么我们不需要以编程方式设置约束,我们可以通过使用故事板的大小类(因特征而异)来实现相同的目标。通过使用尺寸类,我们可以创建自适应布局设计。我们可以为横向和纵向应用程序设置不同的约束。
请查看以下教程链接:
Tutorial Link
【讨论】:
以上是关于切换到横向时,Tableview 将约束更改为全屏的主要内容,如果未能解决你的问题,请参考以下文章