当前位置:  开发笔记 > Android > 正文

如何在iPhone/iPad/iOS上显示临时弹出消息

如何解决《如何在iPhone/iPad/iOS上显示临时弹出消息》经验,为你挑选了5个好方法。

我想在iPhone/iPad上显示一条临时消息,显示动作确认或某些背景活动的快速状态.

有没有标准控制来做到这一点?我见过应用程序这样做.圆角矩形,深色和部分透明,内有文字.它不会要求用户输入,但会在很短的时间内自行消失.Android有一个类似的标准构造.也类似于Growl显示的窗口.

建议表示赞赏.



1> Joe Masilott..:

cocoacontrols.com上有一个用户库,可以模拟Android风格的Toast弹出窗口.可能就是你要找的东西.

http://www.cocoacontrols.com/platforms/ios/controls/altoastview

还有一个遵循相同想法的那个.

http://www.cocoacontrols.com/platforms/ios/controls/itoast



2> Marco Mustap..:

创建一个继承自的类UIAlertView.在您的构造函数中,只需调用[super init]然后添加您想要的任何视图作为子视图.您甚至可以在Interface Builder中设计此视图.像这样的东西:

- (id)initWithMessage:(NSString *)message dismissAfter:(NSTimeInterval)interval
{
  if ((self = [super init]))
  {
     CustomView * customView = [[[CustomView alloc] init] autorelease]; // or load from NIB
     [self addSubview:customView];
     [self performSelector:@selector(dismissAfterDelay) withObject:nil afterDelay:interval];
  }
  return self;
}

- (void)dismissAfterDelay
{
  [self dismissWithClickedButtonIndex:0 animated:YES]; 
}

要显示您的自定义警报视图,只需初始化它,并show像常规一样调用UIAlertView.

CustomAlertView * cav = [[CustomAlertView alloc] initWithMessage:@"Doing Something];
[cav show];
[cav release];

作为一个很好的副作用,当你呈现这个视图时,背景会变暗,你会得到任何警报视图的漂亮摇晃动画.


UIAlertView类旨在按原样使用,不支持子类化.此类的视图层次结构是私有的,不得修改.

3> Kennzo..:

使用UIAlertView.这是一个简单示例的快速链接:

UIAlertView中

编辑:对不起,没看到它自己消失了.我认为您需要对用户收到的消息进行一些确认.UIAlertView几乎完成了这一点.不确定你是否逐渐消失,除非你在一个具有定时器或基于事件的延迟视图的应用程序中显示视图,然后最终删除它.

第二次编辑:找到实现它的方法.您可以在指定的某个设定时间后手动调用解除功能.(抱歉凌乱的帖子)看起来像这样:

//Create UIAlertView alert
alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"Some message" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles: nil];

//After some time
[alert dismissWithClickedButtonIndex:0 animated:TRUE];



4> htafoya..:

我创建了一个Android-Kind toast,非常简单,因为我现在不需要更多的功能.

当显示它时,它被添加到父视图的底部,所以如果该视图是VC的视图,那么它将位于设备的底部中心.

框架自动调整为文本长度.

您使用它: [self.view addSubview: [[ToastAlert alloc] initWithText: @"Sent"]];它将被自动删除,因此不需要引用.

我没有实现这个,但你可以创建一个静态方法来缩短和澄清指令,类似于:[ToastAlert showText: @"Sent" inView: self.view];.

班级:

ToastAlert.h

@interface ToastAlert : UILabel {

}

- (id)initWithText: (NSString*) msg;

@end

ToastAlert.m

#import "ToastAlert.h"
#import 

@implementation ToastAlert

#define POPUP_DELAY  1.5

- (id)initWithText: (NSString*) msg
{

    self = [super init];
    if (self) {

        self.backgroundColor = [UIColor colorWithWhite:0 alpha:0.7];
        self.textColor = [UIColor colorWithWhite:1 alpha: 0.95];
        self.font = [UIFont fontWithName: @"Helvetica-Bold" size: 13];
        self.text = msg;
        self.numberOfLines = 0;
        self.textAlignment = UITextAlignmentCenter;
        self.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;


    }
    return self;
}

- (void)didMoveToSuperview {

    UIView* parent = self.superview;

    if(parent) {

        CGSize maximumLabelSize = CGSizeMake(300, 200);
        CGSize expectedLabelSize = [self.text sizeWithFont: self.font  constrainedToSize:maximumLabelSize lineBreakMode: NSLineBreakByTruncatingTail];

        expectedLabelSize = CGSizeMake(expectedLabelSize.width + 20, expectedLabelSize.height + 10);

        self.frame = CGRectMake(parent.center.x - expectedLabelSize.width/2,
                                parent.bounds.size.height-expectedLabelSize.height - 10,
                                expectedLabelSize.width,
                                expectedLabelSize.height);

        CALayer *layer = self.layer;
        layer.cornerRadius = 4.0f;

        [self performSelector:@selector(dismiss:) withObject:nil afterDelay:POPUP_DELAY];
    }
}

- (void)dismiss:(id)sender {
    // Fade out the message and destroy self
    [UIView animateWithDuration:0.6  delay:0 options: UIViewAnimationOptionAllowUserInteraction
                     animations:^  { self.alpha = 0; }
                     completion:^ (BOOL finished) { [self removeFromSuperview]; }];
}

@end



5> async8192..:

使用带有nil title和nil按钮的UIAlertView,然后在需要时将其关闭.这是我如何做到这一点:

在.h文件中为警报视图创建实例变量:

@interface StatusMessageController : UIViewController {
    UIAlertView *statusAlert;
}

在.m文件中,创建一个显示警报视图并启动计时器的方法,另一个用于处理计时器到期时解除警报的方法:

- (void)showStatus:(NSString *)message timeout:(double)timeout {
    statusAlert = [[UIAlertView alloc] initWithTitle:nil
                                                    message:message
                                                   delegate:nil
                                          cancelButtonTitle:nil
                                          otherButtonTitles:nil];
    [statusAlert show];
    [NSTimer scheduledTimerWithTimeInterval:timeout
                                     target:self
                                   selector:@selector(timerExpired:)
                                   userInfo:nil
                                    repeats:NO];
}

- (void)timerExpired:(NSTimer *)timer {
    [statusAlert dismissWithClickedButtonIndex:0 animated:YES];
}

每当您想要显示状态消息时,请调用它:

[self showStatus:@"Computing" timeout:4.5];

您可以随时通过以下方式解除警报:

[statusAlert dismissWithClickedButtonIndex:0 animated:YES];

您还可以使用新状态即时更改消息:

statusAlert.message = @"Looking up user";

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有