0

我正在将此菜单添加到我正在开发的应用程序中:http: //mobiledevelopertips.com/open-source/ios-open-source-animated-menu.html

我对Objective C比较陌生(只研究了不到一个月),我不完全确定如何执行以下操作:

1)当我点击按钮打开菜单时,我想在整个屏幕上添加一个灰色叠加层。我一直在寻找解决方案,但似乎很多人推荐 DSActivityView 这对我不起作用……我不需要那个加载气泡。我想我可以下载源代码并删除气泡,但这可能需要更多的努力而不是值得。

我认为我可以实例化一个 imageView,将其放在 0,0 并将其扩展到屏幕的边界,以透明的灰色 PNG 文件为来源......就像

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

imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"transparent_gray.png"]];
imageView.frame= CGRectMake (0,0,screenWidth,screenHeight);
[viewController addSubview:imageView];

但是,这种方法可能行不通(我猜它不会覆盖标签栏和状态栏等导航控制器)。此外,我不确定如何从 AwesomeMenu 中访问 viewController。我假设我必须将实例化 AwesomeMenu 的 viewController 的引用传递给 AwesomeMenu 的功能之一,以便能够将 imageView 部署到 viewController 中?

2)我想编写一个在打开菜单动画停止时触发的委托,这样我就可以在覆盖的屏幕上写入文本。有没有一种超级简单的方法可以做到这一点,还是我将不得不猜测一些计时器启动/回调并让回调将文本写到我的屏幕上?哦 - 我以前从未写过委托,但我认为当我希望它们在动画结束时触发时它会变得有点复杂。

4

1 回答 1

1

嗯,我认为你对 UIKit 的工作方式有一些先入为主的观念。对于 1),我建议搜索“视图覆盖屏幕”并更好地了解该问题,尤其是与视图动画相关的问题。其次,有很多方法可以完成您的 2) 项目。如果你有 AwesomeMenu 的源代码,你可以修改它执行的任何动画。如果动画已经完成,animateWithDuration:animations:您可以添加一个completion:块。如果您需要从多个地方制作完成动画,您可以考虑委托。您也许可以为 AwesomeMenu 编写一个类别来添加功能。就您而言,我认为您只需要一个简单的代码修改。但是,如果没有更多代码/事实,很难说。

于 2012-10-05T03:48:33.173 回答