我有一个名为UIView
的View1
用于一些主要选项,另一个视图带有一些名为View2
的附加选项。
我想将View2
隐藏在View1
后面。然后,当我想显示它时,View2
应该从View1
后面出来。我已经在网上尝试了不同的代码,但没有得到适当的解决方案。
我的理解是,您有2个子视图,一个子视图要从另一个子视图进行动画处理。我将主视图声明为superView,将顶部子视图声明为view1,将动画下部视图声明为view2。假设已经添加了view1。
targetFrame是view2最终目标的CGRect
[view2 setFrame:view1.frame];
[superView insertSubview:view2 belowSubview:view1];
// Call this when you want to move view2
[UIView animateWithDuration:animationDuration animations:^{
[view setFrame:targetFrame];
}];
这里没有很多信息。最简单的解决方案是将View2
放在最前面。 theSuperView
这是同时包含View1 and
View2`
theSuperView.bringSubviewToFront(View2)
另一个简单的解决方案是只隐藏View1
View1.hidden = true
不过,对于用户而言,会有更好的体验。对于这种类型的实例,使用动画过渡到视图会更好。
Swift 2
UIView.transitionFromView(View1, toView: View2, duration: .3, options: UIViewAnimationOptions.TransitionFlipFromLeft, completion: nil)
Swift 3,4,5
UIView.transition(from: View1, to: View2, duration: 0.3, options: UIView.AnimationOptions.transitionFlipFromLeft, completion: nil)
这里您可以在options
参数中放入很多内容,包括:
TransitionNone
TransitionFlipFromLeft
TransitionFlipFromRight
TransitionCurlUp
TransitionCurlDown
TransitionCrossDissolve
TransitionFlipFromTop
TransitionFlipFromBottom