如何最好地实现文本+图像消息的发送,同时该“警报/弹出窗口”仅应在1秒内出现(例如限定时间内奖品图片上的消息“您赢了!”)。
如果你只想展示一个浮动消息一小段时间,并且希望它在显示后渐隐消失,只需创建一个标签和一个简单的动画。此示例将在1秒内显示消息,然后在0.3秒内渐隐消失(假设使用 ARC):
- (void)showMessage:(NSString*)message atPoint:(CGPoint)point {
const CGFloat fontSize = 24; // Or whatever.
UILabel* label = [[UILabel alloc] initWithFrame:CGRectZero];
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont fontWithName:@"Helvetica-Bold" size:fontSize]; // Or whatever.
label.text = message;
label.textColor = [UIColor blueColor]; // Or whatever.
[label sizeToFit];
label.center = point;
[self addSubview:label];
[UIView animateWithDuration:0.3 delay:1 options:0 animations:^{
label.alpha = 0;
} completion:^(BOOL finished) {
label.hidden = YES;
[label removeFromSuperview];
}];
}
只需将此方法添加到您的根视图即可。
SVProgressHUD
和 MBProgressHUD 是很好的实现。SVProgressHUD
轻松显示一条带有自定义图像的消息,持续时间为 1 秒:[SVProgressHUD showImage:[UIImage imageNamed:@"won-image"] status:@"You Won!"];
SVProgressHUD
比 MBProgressHUD
可配置性要低得多,例如您无法调整警报持续时间。另一方面,它更易于开箱即用。 - Gabriele PetronellaSVProgressHUD
,因为MBProgressHUD
已经变得过于复杂,难以维护。 - Gabriele Petronella
[self.view addSubview:label]
,因为你的视图控制器应该有一个view属性,它是当前控制器的根视图。 - i_am_jorf