iOS 中通过本机 UI 控件提供工具提示?

问题描述 投票:0回答:5

如何在 iOS 中创建工具提示或类似内容,而不使用任何第三方类?我有一个 UIButton,我希望弹出工具提示几秒钟或直到其被清除。我见过第三方类和库,但想知道它本身是否受支持。我还想显示一个从工具提示的来源处弹出的箭头。我见过一些 UIActionSheet 弹出窗口有这个箭头。

干杯, 阿米特

ios cocoa touch tooltip
5个回答
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];

 }

3
投票

如果您使用的是 iPad,则可以使用

UIPopoverView
。您还可以使用
UIMenuController
在 iPhone 或 iPad 上使用类似“弹出窗口”的功能:教程。除此之外,您可以创建自己的
UIView
子类来执行此操作,但随后您必须自己处理箭头。


1
投票

我最终做的事情相对简单。我最终使用了 UIActionSheet,没有按钮,只有文本。然后使用来自 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。


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}];

再见!


0
投票

在 iOS17 上,Apple 引入了名为 TipKit 的新框架。

现在您可以原生呈现工具提示。

© www.soinside.com 2019 - 2024. All rights reserved.