美文网首页生活和工作IT/互联网iOS/MacOS开发
Objective-C 链式高仿 Android Toast

Objective-C 链式高仿 Android Toast

作者: 腾飞Tenfay | 来源:发表于2019-08-08 22:24 被阅读5次

做过 Android 开发的人都知道 Toast,它会在界面上显示一排黑色背景的文字,用于提示用户信息,但 iOS 并没有类似的控件,所以,今天我就来讲讲在 iOS 上如何高仿 Android 吐司提示框。

原理:

说白了,Android 中的 Toast 可以理解成 iOS 中的一个黑色背景的 UILabel 或者 带点击事件的 UIButton

效果图:

Toast Preview

等等,是不是还可以,什么背景颜色,文本颜色,位置,转角,边框线条大小和颜色,统统可以自己设置的。

说了这么多,那么,如何高仿 Android 吐司提示框呢?我自己写了一个 DYFToast 类,支持横竖屏切换,支持点击消失,在处理转角时避免了离屏渲染,整体采用了链式编程思想,通过点操作,实现了完全类似 Android Toast 提示框。

安装

  • 支持通过 CocoaPods 安装。
pod 'DYFToast', '~> 2.0.1'

接下来一起阅读它的使用说明:

使用说明

  • 导入头文件#import "DYFToast.h"

  • 默认设置并显示 (Shows toast with default settings)

- (IBAction)defaultAction:(id)sender {
    Toast().makeText(self.view, "无效的验证码", Toastl.LENGTH_SHORT).show();
}
  • 设置位置 (Sets gravity)
//  Four: 
//  Gravity.TOP_EDGE, Gravity.TOP
//  Gravity.CENTER, Gravity.BOTTOM

- (IBAction)setGravityAction:(id)sender {
    static int i = 0;

    GravityType type = Gravity.TOP_EDGE;
    char *message = "网络连接超时,请重试";
    if (i == 0) {
        type = Gravity.TOP_EDGE;
        message = "网络连接超时,请重试";
    } else if (i == 1) {
        type = Gravity.TOP;
        message = "请求失败";
    } else if (i == 2) {
        type = Gravity.CENTER;
        message = "清理完成";
    } else if (i == 3) {
        type = Gravity.BOTTOM;
        message = "请输入用户名";
    }

    I++;
    if (i >= 4) { i = 0; }

    UIView *inView = self.navigationController.view;
    Toast().makeText(inView, message, Toastl.LENGTH_LONG)
    .setGravity(type)
    .show();
}
  • 设置背景和文本颜色 (Sets background and text color)
- (IBAction)setColorAction:(id)sender {
    UIColor *bgColor   = [UIColor colorWithRed:120/255.0 green:210/255.0 blue:251/255.0 alpha:0.9];
    UIColor *textColor = [UIColor colorWithRed:255/255.0 green:255/255.0 blue:255/255.0 alpha:1.0];
    char *message      = "Wrong username and password";
    Toast().makeText(self.view, message, Toastl.LENGTH_LONG)
    .setGravity(Gravity.BOTTOM)
    .setColor(bgColor, textColor)
    .show();
}
  • 设置转角 (Sets corner with radius)
- (IBAction)setCornerAction:(id)sender {
    char *message = "Please input email";
    Toast().makeText(self.view, message, Toastl.LENGTH_LONG)
    .setGravity(Gravity.BOTTOM)
    .setCorner(20)
    .show();
}
  • 设置边框 (Sets border with the width and color of line)
- (IBAction)setBorderAction:(id)sender {
    char *message = "手机号码格式不正确,请重输入";
    Toast().makeText(self.view, message, Toastl.LENGTH_LONG)
    .setGravity(Gravity.BOTTOM)
    .setBorder(UIColor.orangeColor, 3)
    .show();
}

技术交流群(群号:155353383)

欢迎加入技术交流群,一起探讨技术问题。

群号:155353383

Sample Codes

如果你觉得能帮助到你,请去Github项目给一颗小星星。谢谢!(If you think it can help you, please go to the github project and give it a star. Thanks!)

相关文章

网友评论

    本文标题:Objective-C 链式高仿 Android Toast

    本文链接:https://www.haomeiwen.com/subject/innjrctx.html