Ich habe einen Android-Kind Toast, ganz einfach, weil ich jetzt in ihm nicht mehr Funktionalität benötigen.
Wenn es angezeigt wird, wird es am unteren Rand der Ansicht des Elternteils hinzugefügt. Wenn diese Ansicht also die VC-Ansicht ist, befindet sie sich in der unteren Mitte des Geräts.
Der Rahmen wird automatisch an die Textlänge angepasst.
Sie verwenden es: [self.view addSubview: [[ToastAlert alloc] initWithText: @"Sent"]];
, es wird automatisch entfernt, so dass keine Referenz benötigt wird.
Ich habe dies nicht implementiert, aber Sie können eine statische Methode erstellen, um die Anweisung zu verkürzen und zu verdeutlichen: [ToastAlert showText: @"Sent" inView: self.view];
.
Die Klasse:
ToastAlert.h
@interface ToastAlert : UILabel {
}
- (id)initWithText: (NSString*) msg;
@end
ToastAlert.m
#import "ToastAlert.h"
#import <QuartzCore/QuartzCore.h>
@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
Dies ist am nächsten zu dem, was ich suchte, obwohl ich am Ende meine eigene schrieb. – David
Ich fand ALToastView nützlich, danke! –
Update: Die immer populäre [MBProgressHUD] (https://github.com/jdg/MBProgressHUD) hat jetzt eine [Toast-ähnliche Benachrichtigung] (http://dl.dropbox.com/u/378729/MBProgressHUD/7. png). –