San*_*ush 45 animation button uiview navigationbar ios
我想在更改其隐藏模式时向视图添加动画,即
my_view.hidden=YES;
Run Code Online (Sandbox Code Playgroud)
我在导航栏中添加了一个按钮.当我们点击它时,新视图被设置为取消隐藏.它绘制在导航表的上方.
Jer*_*man 57
将视图的不透明度从100%设置为0%.让动画完成回调将视图设置为隐藏.您可能还希望在回调期间将不透明度重置为100%,因此当您取消隐藏时,视图将显示完全不透明.
yourView.alpha = 0.0 //for zero opacity
yourView.alpha = 1.0 //for 100% opacity
Run Code Online (Sandbox Code Playgroud)
小智 31
但是没有隐藏的动画; 使用下面的Swift代码得到相同的结果:
UIView.animate(withDuration: 0.2, delay: 0, options: [], animations: {
self.yourView.alpha = 0 // Here you will get the animation you want
}, completion: { _ in
self.yourView.hidden = true // Here you hide it when animation done
})
Run Code Online (Sandbox Code Playgroud)
Eyt*_*tan 29
不幸的是,隐藏不是通过UIView动画可动画的属性.我认为你最好的选择可能是使用@Erik B建议的其中一个动画,或者开始涉足更强大的Core Animations.浏览UIView动画和核心动画的文档.
通过使用UIView动画从另一个视图下方滑动新视图,我实现了类似于您的建议.这使它看起来像一个抽屉滑出.如果你想做类似的事情,你需要拦截内部事件的触摸并将动画代码放在那里.
- (IBAction)buttonClicked:(id)sender {
[UIView animateWithDuration:0.5
delay:0.0
options:UIViewAnimationCurveEaseOut
animations:^(void) {
self.myView.frame = /* set the frame here */
}
completion:NULL];
}
Run Code Online (Sandbox Code Playgroud)
小智 20
我认为更合适的方法是:
[UIView transitionWithView:aView
duration:0.3
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^(void){
aView.hidden = NO;
}
completion:nil];
Run Code Online (Sandbox Code Playgroud)
Pau*_*fel 20
更新到Swift 3:
UIView.animate(withDuration: 0.2, delay: 0.2, options: .curveEaseOut,
animations: {firstView.alpha = 0},
completion: { _ in firstView.isHidden = true
//Do anything else that depends on this animation ending
})
Run Code Online (Sandbox Code Playgroud)
如果你希望在第一个视图消失后回复一些东西,你可以使用alpha = 1和复制完成块内的代码hidden = false.
N.J*_*.J. 18
这是我写的一个类别,用于在UIView上引入一个新的"隐藏"属性,它正确支持动画:
@implementation UIView (AnimateHidden)
-(void)setHiddenAnimated:(BOOL)hide
{
[UIView animateWithDuration:0.5
delay:0.0
options: UIViewAnimationCurveEaseOut
animations:^
{
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
if (hide)
self.alpha=0;
else
{
self.hidden= NO;
self.alpha=1;
}
}
completion:^(BOOL b)
{
if (hide)
self.hidden= YES;
}
];
}
@end
Run Code Online (Sandbox Code Playgroud)
这是更正NJ版本:
@implementation UIView (AnimateHidden)
-(void)setHiddenAnimated:(BOOL)hide duration:(NSTimeInterval)duration {
if(self.hidden == hide)
return;
if(hide)
self.alpha = 1;
else {
self.alpha = 0;
self.hidden = NO;
}
[UIView animateWithDuration:duration animations:^{
if (hide)
self.alpha = 0;
else
self.alpha = 1;
} completion:^(BOOL finished) {
if(finished)
self.hidden = hide;
}];
}
@end
Run Code Online (Sandbox Code Playgroud)
这是快速版本:
UIView.animateWithDuration(0.5, delay: 0.2, options:
UIViewAnimationOptions.CurveEaseOut, animations: {
objView.alpha = 0
}, completion: { finished in
objView.hidden = true
})
Run Code Online (Sandbox Code Playgroud)
这将执行持续时间为5秒且延迟2秒后的动画.
可用的AnimationOptions是:
CurveEaseInOut, CurveEaseIn, CurveEaseOut, CurveLinear
Run Code Online (Sandbox Code Playgroud)