【发布时间】:2012-03-05 14:25:32
【问题描述】:
是否有任何内置、开源或教程可用于创建可重复使用且易于使用的弹出窗口,以便在游戏帮助中使用。
基本上我想在第一次运行游戏时显示弹出提示/帮助,以“指向”屏幕上的各种对象,以帮助用户在游戏中定位自己。
更新:Here is an example 我最终希望它看起来/行为如何,虽然我不需要它那么通用但尽可能接近会很好
【问题讨论】:
标签: iphone objective-c ios uikit
是否有任何内置、开源或教程可用于创建可重复使用且易于使用的弹出窗口,以便在游戏帮助中使用。
基本上我想在第一次运行游戏时显示弹出提示/帮助,以“指向”屏幕上的各种对象,以帮助用户在游戏中定位自己。
更新:Here is an example 我最终希望它看起来/行为如何,虽然我不需要它那么通用但尽可能接近会很好
【问题讨论】:
标签: iphone objective-c ios uikit
我喜欢那些:https://github.com/chrismiles/CMPopTipView。
不错且易于设置。
【讨论】:
基本上您需要的是自定义视图。
您不能使用 Apple 的 UIAlertView,因为它的用途与您所寻找的完全不同。
我不知道您的具体需求是什么,但您可以使用简单的UILabel:
CGRect ref = objectToAddress.frame;
UILabel *tip = [[UILabel alloc] initWithFrame:CGRectMake(ref.x+ref.width,
ref.y+ref.height,
width,
height)];
[tip setText:messageToShow];
[self.view addSubview:tip];
[tip release];
其中width 和height 是您要显示的提示的尺寸,messageToShow 是您要显示的消息。
当然,您可以根据需要自定义UILabel,更改字体或背景颜色。查看reference 了解更多信息。
编辑:
您可以查看可能的 iPhone 弹出框实现:WEPopover。在 iPad 上可以直接使用苹果的UIPopoverController
【讨论】:
我所做的是创建了两个函数
- (void) showOverlay: (BOOL) show withMessage: (NSString*) message
{
if(show)
{
// I create or load a UIView with labels, etc, and with an alpha of 0.6/07
// give it a tag for later dismissal
overlay.tag = tag; // any arbitrary value
// add as subview
[self.view addSubview: overlay];
}
else
{
// hide the view
UIView *overlay = [self.view viewWithTag: tag];
[overlay removeFromSuperview];
}
}
那我有个隐藏叠加功能
- (void) hideOverlayInSecs: (NSInterval) time
{
[self performSelector: @selector(hideOverlay) withObject: nil afterDelay: time];
}
然后您可以编写一个包装函数来在不同的持续时间内显示/关闭它
[self showOverlay: YES withMessage: @"help tip"];
[self hideOverlayInSecs: 2];
【讨论】:
在我的应用程序中,提示是相当静态的,所以我使用我最喜欢的图像编辑器创建了一个提示图像,然后简单地使用提示图像创建了一个 UIImageView,然后将其作为子视图添加到当前视图中,确保将其置于其他视图之上。
效果很好,但我的提示还是相当固定的。
如果您只想在第一次运行时显示它们,您需要创建一个 BOOL 并保存在 NSUserDefaults 中。
【讨论】:
这个怎么样? 这是我自己写的。这很简单,可能是您正在寻找的。 在顶部或底部弹出任何 UIView 实例,然后在几秒钟后消失。
https://github.com/SaKKo/SKTipAlertView
希望你觉得它有用。干杯,
【讨论】: