我需要知道iOS中是否存在任何与Android中的Toast消息相似的方法.也就是说,我需要显示一条消息,该消息在几秒钟后自动被解除.这类似于Android环境中Toast类的功能.
Ama*_*mar 97
你可以利用MBProgressHUD项目.
使用HUD模式MBProgressHUDModeText进行类似吐司的行为,
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.navigationController.view animated:YES];
// Configure for text only and offset down
hud.mode = MBProgressHUDModeText;
hud.label.text = @"Some message...";
hud.margin = 10.f;
hud.yOffset = 150.f;
hud.removeFromSuperViewOnHide = YES;
[hud hideAnimated:YES afterDelay:3];
Run Code Online (Sandbox Code Playgroud)

Kir*_*ela 84
NSString *message = @"Some message...";
UIAlertView *toast = [[UIAlertView alloc] initWithTitle:nil
message:message
delegate:nil
cancelButtonTitle:nil
otherButtonTitles:nil, nil];
[toast show];
int duration = 1; // duration in seconds
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, duration * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[toast dismissWithClickedButtonIndex:0 animated:YES];
});
Run Code Online (Sandbox Code Playgroud)
使用适用于iOS 9或更高版本的UIAlertViewController
NSString *message = @"Some message...";
UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil
message:message
preferredStyle:UIAlertControllerStyleAlert];
[self presentViewController:alert animated:YES completion:nil];
int duration = 1; // duration in seconds
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, duration * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[alert dismissViewControllerAnimated:YES completion:nil];
});
Run Code Online (Sandbox Code Playgroud)
Swift 3.2
let message = "Some message..."
let alert = UIAlertController(title: nil, message: message, preferredStyle: .alert)
self.present(alert, animated: true)
// duration in seconds
let duration: Double = 5
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + duration) {
alert.dismiss(animated: true)
}
Run Code Online (Sandbox Code Playgroud)
Sur*_*gch 47
在Android中,Toast是一条短消息,会在屏幕上显示很短的时间,然后自动消失,而不会中断用户与应用的互动.
所以很多来自Android背景的人都想知道Toast的iOS版本是什么.除了当前的问题,其他类似的问题可以在这里,这里和这里找到.答案是,在iOS中没有与Toast完全相同的东西.尽管如此,已经提出了各种解决方法,包括
但是,我的建议是坚持iOS已经提供的标准UI选项.不要试图使您的应用看起来和行为与Android版本完全相同.想想如何重新打包它,使它看起来和感觉像一个iOS应用程序.有关选择,请参阅以下链接.
考虑以传达相同信息的方式重新设计UI.或者,如果信息非常重要,那么警报可能就是答案.
Saz*_*han 20
斯威夫特4
这个小技巧怎么样?
func showToast(controller: UIViewController, message : String, seconds: Double) {
let alert = UIAlertController(title: nil, message: message, preferredStyle: .alert)
alert.view.backgroundColor = UIColor.black
alert.view.alpha = 0.6
alert.view.layer.cornerRadius = 15
controller.present(alert, animated: true)
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + seconds) {
alert.dismiss(animated: true)
}
}
Run Code Online (Sandbox Code Playgroud)
调用示例:
showToast(controller: self, message : "This is a test", seconds: 2.0)
Run Code Online (Sandbox Code Playgroud)
Ged*_*bel 15
斯威夫特3
对于没有第三方代码的简单解决方案:
只需使用普通的UIAlertController,但使用style = actionSheet(请查看下面的代码)
let alertDisapperTimeInSeconds = 2.0
let alert = UIAlertController(title: nil, message: "Toast!", preferredStyle: .actionSheet)
self.present(alert, animated: true)
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + alertDisapperTimeInSeconds) {
alert.dismiss(animated: true)
}
Run Code Online (Sandbox Code Playgroud)
这个解决方案的优点:
对于Swift 3 & 4:
使用烤面包机库
Toast(text: "Hello, world!", duration: Delay.long)
Run Code Online (Sandbox Code Playgroud)
对于Swift 2:
使用JLToast
| 归档时间: |
|
| 查看次数: |
97382 次 |
| 最近记录: |