我认为iphone应用程序的一个很好的补充就是能够在iPhone中实现OS X Dock。我的想法是在我的应用程序中选择5个常规菜单,当您在菜单上滑动手指时,各个图标会放大,当您选择一个选项时,图标会在您等待时反弹。
我个人会喜欢我的应用程序,但我想知道是否可以完成。是不是太密集了?不知道是否可以在Core Graphics中完成,还是需要OpenGL ES?
感谢所有回应。
答案 0 :(得分:3)
5是完全适合UITabBarController的图标的确切数量,提供了一种在符合Apple iPhone人机界面指南的视图之间切换的简便方法,并且对iPhone用户来说非常熟悉。
这是一个视频,展示了如何使用UITabBarController创建应用程序:
http://www.screentoaster.com/watch/stVUpUQEVLQVteRl1eXFxf/iphonedev_101_uitabbarcontroller
如果你仍然觉得你真的需要看起来像OS X Dock的东西,我建议你使用Core Animation。
创建自定义视图,并在init代码中为每个停靠栏图标添加CALayer。实现touchesMoved事件以检测手指位置,并修改图标图层的边界和位置属性以移动/调整它们的大小。您需要微调算法以调整图标大小和用于尝试匹配OS X中的行为的动画模式,但我认为它只是基于距光标(或手指在这种情况下)的距离的线性失真)。
实施代码以将图标重置为默认位置,并在touchesEnded中启动您想要的图标操作。
要弹回图标,您可以尝试使用带有kCAMediaTimingFunctionEaseInEaseOut计时功能的CABasicAnimation动画显示位置,并启用重复和自动反转。
答案 1 :(得分:1)
Core Animation框架应该适用于您正在讨论的各种动画(弹跳,缩放)。我认为它比OpenGL容易得多。
这是一段代码片段,可以在0.2秒的时间内将图标移动到y坐标148:
[UIView beginAnimations: @"iconBounce" context: NULL];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(iconBounceAnimationDidStop:finished:context:)];
CGRect iconPosition = iconImageView.frame;
iconPosition.origin.y = 148; //bounce up
iconImageView.frame = iconPosition;
[UIView setAnimationDuration: 0.2];
[UIView commitAnimations];
选择器iconBounceAnimationDidStop:finished:context:
表示动画完成时将调用的方法。您可以编写该方法,以便将图标向下移动到起始位置以完成反弹。
答案 2 :(得分:0)
我可能会使用OpenGL进行那种图形处理。在OpenGL中非常有效地完成纹理映射/缩放。
也就是说,您的想法存在的问题是,这将是“打开其他应用的应用”。
答案 3 :(得分:0)
完全可以使用Core Animation,但是你会遇到用户交互问题。在Mac上,鼠标拖动和点击之间存在区别。但是在iPhone上,我们只有手指,我们习惯于直接互动,这意味着我们可以上下左右选择它。在这种其他模式中,您说龙头拖动(放大图标)可能与龙头提升(选择)有所不同。此外,当您在图标条上拖动手指时,当前(放大的)图标始终是您手指下方的图标,并且不可见,因此您必须对其进行调整。
尽管可行,但您可能需要考虑用户体验。虽然听起来很酷,但我的猜测是,要在无鼠标的直接交互环境中进行外观和感觉,需要进行大量的调整。如果Apple没有尝试并决定反对,我会感到惊讶。