iPhone/iPad を使ってアプリを作っていた時、UIView のフェード効果を作りたいと思っていました。
以下の関数を使用しましたが、うまくいきましたが、Mac用のプログラムを作成していて、UIViewの代わりにNSViewを使用しているため、コードが機能しません。お願いします
-(void)fadeOut:(UIView*)viewToDissolve
withDuration:(NSTimeInterval)duration
andWait:(NSTimeInterval)wait
{
[UIView beginAnimations: @"Fade Out" context:nil];
// wait for time before begin
[UIView setAnimationDelay:wait];
// druation of animation
[UIView setAnimationDuration:duration];
viewToDissolve.alpha = 0.0;
[UIView commitAnimations];
}
-(void)fadeIn:(UIView*)viewToFadeIn
withDuration:(NSTimeInterval)duration
andWait:(NSTimeInterval)wait
{
[UIView beginAnimations: @"Fade In" context:nil];
// wait for time before begin
[UIView setAnimationDelay:wait];
// druation of animation
[UIView setAnimationDuration:duration];
viewToFadeIn.alpha = 1;
[UIView commitAnimations];
}
/**
Fade in from fade out
*/
-(void) fadeInFromFadeOut:(UIView*)viewToFadeIn
withDuration:(NSTimeInterval)duration
{
viewToFadeIn.hidden=NO;
[self fadeOut:viewToFadeIn withDuration:1 andWait:0];
[self fadeIn:viewToFadeIn withDuration:duration andWait:0];
}
私がしたこと:
-(void)fadeOut:(NSView*)viewToDissolve
withDuration:(NSTimeInterval)duration
andWait:(NSTimeInterval)wait
{
[NSAnimationContext beginGrouping];
// Animate alpha fades with half-second duration
// wait for time before begin
// [NSAnimationContext setAnimationDelay:wait];
[[NSAnimationContext currentContext] setDuration:duration];
[[viewToDissolve animator] setAlphaValue:0.0];
[NSAnimationContext endGrouping];
}
-(void)fadeIn:(NSView*)viewToFadeIn
withDuration:(NSTimeInterval)duration
andWait:(NSTimeInterval)wait
{
// wait for time before begin
//[NSAnimationContext setAnimationDelay:wait];
[NSAnimationContext beginGrouping];
// Animate alpha fades with half-second duration
[[NSAnimationContext currentContext] setDuration:duration];
[[viewToFadeIn animator] setAlphaValue:1];
[NSAnimationContext endGrouping];
}
-(void) fadeInFromFadeOut:(NSView*)viewToFadeIn
withDuration:(NSTimeInterval)duration
{
viewToFadeIn.hidden=NO;
[self fadeOut:viewToFadeIn withDuration:1 andWait:0];
[self fadeIn:viewToFadeIn withDuration:duration andWait:0];
}