在我的一个控制器中,我正在使用带有两个单元格的UICollectionView(单元格的正面有一个按钮,如果用户点击它,则该单元格应该向他/她显示单元格的另一侧)
所以我的班级上有这个
firstView = UIView()
...
self.addSubview(firstView)
infoView = UIView()
...
self.insertSubview(infoView, belowSubview: firstView)
两个视图中都有很多元素,为了构造这些元素,我主要使用Visual Format约束和锚点。
即
let topFirstViewConstraint = firstView.topAnchor.constraint(equalTo: self.topAnchor, constant: 4)
allConstraints.append(topFirstViewConstraint)
...
let goButtonCenter = goButton.centerXAnchor.constraint(equalTo: firstView.centerXAnchor, constant: 0)
allConstraints.append(goButtonCenter)
要在正面和背面视图之间切换,我使用的是UIView.transition:
UIView.transition(from: firstView, to: infoView, duration: 0.2, options: .transitionFlipFromLeft) { (success) in
}
它就像一种魅力,我根本没有任何autoLayout错误。
但是,如果我尝试从firstView
切换到infoView
firstView
,约束就会变得疯狂,反之亦然(我仍然没有任何错误,但是我知道这些视图应该如何看,那是一团糟)。我尝试在过渡关闭中使用self.updateConstraints()
,但是它不起作用。
有人经历过类似的事情吗?
答案 0 :(得分:1)
https://developer.apple.com/documentation/uikit/uiview/1622562-transition说:
fromView:过渡的起始视图。默认情况下,作为过渡的一部分,该视图将从其超级视图中删除。
当约束的一方从超级视图中删除时,约束会发生什么?它肯定不再起作用了。
讨论: 此方法提供了一种从fromView参数中的视图过渡到toView参数中的视图的简单方法。默认情况下,fromView中的视图在视图层次结构中被toView中的视图替换。 如果两个视图已经属于视图层次结构,则可以在options参数中包含showHideTransitionViews选项,以简单地隐藏或显示它们。