如何在Cocoa中自定义视图时制作幻灯片动画?

pme*_*ino 16 macos cocoa

我正在开发一个应用程序,当点击按钮时,自定义视图应从侧面滑动.实际上只是一个窗口出现,但我希望有类似iOS导航控制器的东西.怎么做到这一点?这适用于Mac OS X应用程序.

iai*_*ain 23

您可以使用Core Animation转换.您需要打开父视图的图层支持,然后才能执行

[[parentView animator] replaceSubview:oldView with:newView];
Run Code Online (Sandbox Code Playgroud)

默认情况下,它将交叉淡化视图,但如果要将其更改为幻灯片动画,则可以将相应的CAT转换添加到动画字典中.

- (CATransition *)slideAnimation
{
    CATransition *transition = [CATransition animation];
    [transition setType:kCATransitionMoveIn];
    [transition setSubtype:kCATransitionFromRight];
    return transition;
}
Run Code Online (Sandbox Code Playgroud)

然后在parentView中设置该动画

...
[parentView setAnimations:[NSDictionary dictionaryWithObject:[self slideAnimation] forKey:@"subviews"];
...
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用的是最新版本的API/XCode,则最后一行可以缩减为`parentView.animations = @ {@"subviews":self.slideAnimation}` (4认同)

Ven*_*MKO 5

你可以用animator.这是一个示例:

NSPoint startPoint = NSMakePoint(NSWidth([[self window] frame]), NSHeight([[self window] frame]) - NSHeight([view frame]));
[view setFrameOrigin:startPoint];
NSPoint endPoint = NSMakePoint(0.0f, startPoint.y);
[[view animator] setFrameOrigin:endPoint];
Run Code Online (Sandbox Code Playgroud)