如何在不使用任何第三方类的情况下在iOS中创建工具提示或类似内容?我有一个UIButton,我希望有一个工具提示弹出几秒钟或直到它被清除。我见过第三方类和库,但想知道它是否支持本机。我还想显示一个箭头从工具提示的来源弹出。我已经看到一些UIActionSheet Popups有这个箭头。
干杯, 阿米特
答案 0 :(得分:6)
好吧,我最终使用了第三方工具提示CMTopTipView。它的开销相对较低,只是标头和实现。稍微修改它以考虑ARC。这是我做的:
#import "CMPopTipView.h"
CMPopTipView *navBarLeftButtonPopTipView;
- (void) dismissToolTip
{
[navBarLeftButtonPopTipView dismissAnimated:YES];
}
- (void) showDoubleTap
{
navBarLeftButtonPopTipView = [[CMPopTipView alloc]
initWithMessage:@"DOUBLE Tap \n to view details"] ;
navBarLeftButtonPopTipView.delegate = self;
navBarLeftButtonPopTipView.backgroundColor = [UIColor darkGrayColor];
navBarLeftButtonPopTipView.textColor = [UIColor lightTextColor];
navBarLeftButtonPopTipView.opaque = FALSE;
[navBarLeftButtonPopTipView presentPointingAtView:catButton1
inView:self.view animated:YES];
navBarLeftButtonPopTipView.alpha = 0.75f;
NSTimer *timerShowToolTip = [NSTimer scheduledTimerWithTimeInterval:5.0
target:self
selector:@selector(dismissToolTip) userInfo:nil repeats:NO];
}
答案 1 :(得分:3)
如果您使用的是iPad,则可以使用UIPopoverView
。您还可以使用UIMenuController
在iPhone或iPad上使用“popover”功能:tutorial。除此之外,您可以创建自己的UIView
子类来执行此操作,但之后您必须自己处理箭头。
答案 2 :(得分:1)
我最终做的事情相对简单。我最终使用UIActionSheet而没有Buttons只是一个文本。然后使用来自UIButton在self.view中的坐标平面的showFromRect。
UIActionSheet *popup = [[UIActionSheet alloc]
initWithTitle:@"DOUBLE Tap \n to view details."
delegate:self cancelButtonTitle:@"Cancel"
destructiveButtonTitle:nil otherButtonTitles: nil];
[popup sizeToFit];
popup.tag = 9999;
CGRect myImageRect = CGRectMake(240.0f, 605.0f, 30.0f, -40.0f);
[popup showFromRect:myImageRect inView:self.view animated:YES];
我可能只是吮吸它并使用CMPopTipView(第三方控件)调整它的大小和不透明度以及淡化alpha。
答案 3 :(得分:1)
我看到有些人正在使用CMPopTip,非常棒的“库”。 很酷的方式!
只是一些事情,如果你在iOS7中使用它,你有一些弃用。
文本弃用部分的新用法(这是一个例子)
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
paragraphStyle.alignment = self.titleAlignment;
[self.title drawInRect:titleFrame withAttributes:@{NSFontAttributeName:self.titleFont,NSParagraphStyleAttributeName:paragraphStyle}];
再见!