gpt4 book ai didi

ios - UI窗口滑动动画

转载 作者:行者123 更新时间:2023-12-02 03:26:18 33 4
gpt4 key购买 nike

我正在显示一个新的 UIWindow,我希望它从左侧滑入,并在关闭时滑入左侧。如何制作 UIWindow 的显示和删除动画?

这就是我目前展示新 UIWindow 的方式。

- (void)showMenu
{

CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;

UIButton *closeMenuButton = [UIButton buttonWithType:UIButtonTypeCustom];
[closeMenuButton setFrame:CGRectMake(250, 10, 50, 50)];
[closeMenuButton setImage:[UIImage imageNamed:@"close"] forState:UIControlStateNormal];
[closeMenuButton addTarget:self action:@selector(closeMenu) forControlEvents:UIControlEventTouchUpInside];

blurredView = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, screenWidth, screenHeight)];
[blurredView setBarStyle:UIBarStyleBlack];

MenuTableViewController *menu = [[MenuTableViewController alloc]initWithNibName:@"MenuTableViewController" bundle:nil];
menu.view.frame = CGRectMake(0, 30, screenWidth, screenHeight - 50);

menuWindow = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];
menuWindow.backgroundColor = [UIColor clearColor];
menuWindow.windowLevel = UIWindowLevelStatusBar;
menuWindow.rootViewController = menu;
[menuWindow addSubview:blurredView];
[blurredView addSubview:closeMenuButton];
[blurredView addSubview:menu.view];
[menuWindow makeKeyAndVisible];
}

也许像这样?

menuWindow = [[UIWindow alloc]initWithFrame:CGRectMake(0, 0, 0, screenHeight)];
menuWindow.backgroundColor = [UIColor clearColor];
menuWindow.windowLevel = UIWindowLevelStatusBar;
menuWindow.rootViewController = menu;
[menuWindow addSubview:blurredView];
[blurredView addSubview:closeMenuButton];
[blurredView addSubview:menu.view];
[menuWindow makeKeyAndVisible];

[UIView animateWithDuration:0.5 animations:^{
menuWindow.frame = screenRect;
blurredView.frame = screenRect;
menu.view.frame = CGRectMake(0, 30, screenWidth, screenHeight - 50);
}
completion:^(BOOL finished) {

}];

最佳答案

您可以像任何其他 View 一样对 UIWindow 进行动画处理(使用 UIView 动画方法)。

一些需要记住的事情。 您需要保留一个窗口以使其保留在屏幕上。此外,您需要记住窗口位于屏幕坐标中,而不是 View 坐标中,因此您需要在之前考虑当前的界面方向开始动画。

在上面的示例中,我看到您正在创建一个窗口,使其成为关键且可见......但什么也没有。您需要保留该窗口。

此外,您使用 API 的方式不正确。一旦设置了 Root View Controller ,框架就会负责 View 。您再次将其添加为 subview ,这可能会弄乱事情。您确实不应该直接将 subview 添加到窗口,只需将它们添加到 View Controller 的 View 层次结构中,然后让它处理它。

关于ios - UI窗口滑动动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24535455/

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