我的两个视图的两个IBoutlet在那里,我正试图翻转。在UIView.transition之后,“ from” IBOutlet设置为nil,无法找出造成这种情况的原因。
@IBOutlet weak var showingSideView: shadowView!
@IBOutlet weak var hiddenSideView: shadowView!
UIView.transition(from: showingSideView, to: hiddenSideView, duration: 0.7, options: transitionDirection) { (isFlipped) in
self.showingBack = !self.showingBack
}
答案 0 :(得分:2)
答案 1 :(得分:1)
如果您通读了文档:
默认情况下,fromView中的视图在视图层次结构中被toView中的视图替换。如果两个视图都已经属于视图层次结构,则可以在options参数中包含 showHideTransitionViews 选项,以简单地隐藏或显示它们。
因此,要将您的视图保持在层次结构中,请添加该选项:
@IBOutlet var showingSideView: shadowView!
@IBOutlet var hiddenSideView: shadowView!
UIView.transition(from: showingSideView,
to: hiddenSideView,
duration: 0.7,
options: [.transitionFlipFromLeft, .showHideTransitionViews])
{ (isFlipped) in
self.showingBack = !self.showingBack
}
修改:
只是为了澄清...
Apple现在建议对于weak
不使用@IBOutlets
,但这对这里的问题没有影响。使用.showHideTransitionViews
时,即使@IBOutlets
设置为弱,引用也会 不 变为空。