带有显示隐藏动画的 UIView 翻转过渡 iOS
UIView flip transition with show hide animation iOS
我正在制作从一个 UIView 到另一个隐藏的动画。
代码:
UIView.transition(from: mediumFirstView, to: mediumSecondView,
duration: 0.5, options: [.transitionFlipFromRight,
.showHideTransitionViews]) { _ in
self.mediumFirstView.isUserInteractionEnabled = false
self.mediumSecondView.isUserInteractionEnabled = true
}
或者这个:
UIView.transition(with: mediumLimitedView, duration: 0.5,
options: [.transitionFlipFromRight,
.showHideTransitionViews],
animations: {
self.mediumFirstView.alpha = 0
self.mediumSecondView.alpha = 1
}) { _ in
self.mediumFirstView.isUserInteractionEnabled = false
self.mediumSecondView.isUserInteractionEnabled = true
}
两者的问题是 First UIView 只有在完整的翻转动画之后才会隐藏,而不是像预期的那样隐藏一半。难道我做错了什么?
视图层次结构:
如果你想为可见性设置动画
UIView.transition(with: mediumLimitedView, duration: 0.5,
options: [.transitionFlipFromRight,
.showHideTransitionViews],
animations: {
self.mediumFirstView.alpha = 0
self.mediumSecondView.alpha = 1
}) { _ in
self.mediumFirstView.isHidden = true
self.mediumSecondView.isHidden = false
self.mediumFirstView.isUserInteractionEnabled = false
self.mediumSecondView.isUserInteractionEnabled = true
}
如果您只需要更新 isHidden - 您可以设置 t/2 秒的计划操作(在您的情况下,t 是 0.5s 秒,所以 t/2 = 0.25s
DispatchQueue.main.asyncAfter(deadline: .now() + 0.25) {
[weak self] in
guard let strongSelf = self else{
return
}
strongSelf.mediumFirstView.isHidden = true
strongSelf.mediumSecondView.isHidden = false
}
他们两个都对我有用。只需替换 mediumFirstView 和 mediumSecondView location.
UIView.transition(from: mediumSecondView, to: mediumFirstView,
duration: 5.5, options: [.transitionFlipFromRight,
.showHideTransitionViews]) { _ in
self.mediumFirstView.isUserInteractionEnabled = false
self.mediumSecondView.isUserInteractionEnabled = true
}
我正在制作从一个 UIView 到另一个隐藏的动画。 代码:
UIView.transition(from: mediumFirstView, to: mediumSecondView,
duration: 0.5, options: [.transitionFlipFromRight,
.showHideTransitionViews]) { _ in
self.mediumFirstView.isUserInteractionEnabled = false
self.mediumSecondView.isUserInteractionEnabled = true
}
或者这个:
UIView.transition(with: mediumLimitedView, duration: 0.5,
options: [.transitionFlipFromRight,
.showHideTransitionViews],
animations: {
self.mediumFirstView.alpha = 0
self.mediumSecondView.alpha = 1
}) { _ in
self.mediumFirstView.isUserInteractionEnabled = false
self.mediumSecondView.isUserInteractionEnabled = true
}
两者的问题是 First UIView 只有在完整的翻转动画之后才会隐藏,而不是像预期的那样隐藏一半。难道我做错了什么?
视图层次结构:
如果你想为可见性设置动画
UIView.transition(with: mediumLimitedView, duration: 0.5,
options: [.transitionFlipFromRight,
.showHideTransitionViews],
animations: {
self.mediumFirstView.alpha = 0
self.mediumSecondView.alpha = 1
}) { _ in
self.mediumFirstView.isHidden = true
self.mediumSecondView.isHidden = false
self.mediumFirstView.isUserInteractionEnabled = false
self.mediumSecondView.isUserInteractionEnabled = true
}
如果您只需要更新 isHidden - 您可以设置 t/2 秒的计划操作(在您的情况下,t 是 0.5s 秒,所以 t/2 = 0.25s
DispatchQueue.main.asyncAfter(deadline: .now() + 0.25) {
[weak self] in
guard let strongSelf = self else{
return
}
strongSelf.mediumFirstView.isHidden = true
strongSelf.mediumSecondView.isHidden = false
}
他们两个都对我有用。只需替换 mediumFirstView 和 mediumSecondView location.
UIView.transition(from: mediumSecondView, to: mediumFirstView,
duration: 5.5, options: [.transitionFlipFromRight,
.showHideTransitionViews]) { _ in
self.mediumFirstView.isUserInteractionEnabled = false
self.mediumSecondView.isUserInteractionEnabled = true
}