gpt4 book ai didi

macos - 我如何在 OSX 上制作这个 iOS 动画?

转载 作者:行者123 更新时间:2023-12-03 16:01:30 25 4
gpt4 key购买 nike

我在 iOS 中有一个非常简单的动画,可以淡出一个 View ,调整容器大小以适合另一个 View ,然后淡入另一个 View 。这很容易做到,也非常简单。

我一直在尝试在 OSX 上做一些几乎与此类似的事情,但我一直不知道如何去做。与 iOS 相比,OSX 上的动画感觉非常笨重和困难。

任何帮助将不胜感激!!

谢谢! :)

// Fade out viewOne, resize frame to fit viewTwo, fade in viewTwo
[UIView animateWithDuration: 0.15
animations: ^{
[viewOne setAlpha:0.0];
}
completion: ^(BOOL finished) {
[UIView animateWithDuration: 0.2
animations: ^{
[self setFrame: [viewTwo frame]];
}
completion: ^(BOOL finished) {
[viewTwo setAlpha: 0.0];
[self addSubview: viewTwo];
[UIView animateWithDuration: 0.15
animations: ^{
[viewTwo setAlpha:1.0];
}];
}];
}];

最佳答案

我编写了一个小类,它使用 block 来完成与上面在 OSX 上使用动画代理代理时基本相同的事情。

请注意,此类不是线程安全的,并且没有经过任何特定或压力测试。

//Interface
@interface MZAnimator : NSObject{}

+ (void)animateWithDuration:(NSTimeInterval)duration
animation:(void (^)(void))animationBlock;
+ (void)animateWithDuration:(NSTimeInterval)duration
animation:(void (^)(void))animationBlock
completion:(void (^)(void))completionBlock;
@end


//Implementation
@interface MZAnimator ()
+ (void)runEndBlock:(void (^)(void))completionBlock;
@end

@implementation MZAnimator

+ (void)animateWithDuration:(NSTimeInterval)duration
animation:(void (^)(void))animationBlock
{
[self animateWithDuration:duration animation:animationBlock completion:nil];
}
+ (void)animateWithDuration:(NSTimeInterval)duration
animation:(void (^)(void))animationBlock
completion:(void (^)(void))completionBlock
{
[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:duration];
animationBlock();
[NSAnimationContext endGrouping];

if(completionBlock)
{
id completionBlockCopy = [[completionBlock copy] autorelease];
[self performSelector:@selector(runEndBlock:) withObject:completionBlockCopy afterDelay:duration];
}
}

+ (void)runEndBlock:(void (^)(void))completionBlock
{
completionBlock();
}
@end

关于macos - 我如何在 OSX 上制作这个 iOS 动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7788998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com