iOS 鏈式編程之仿真安卓 Toast

做過安卓開發(fā)的人都知道 Toast,它會在界面上顯示一排黑色背景的文字,用于提示用戶信息,但 iOS 并沒有類似的控件,所以,今天我就來講講在 iOS 上如何仿安卓 Toast?

原理

說白了,安卓中的 Toast 可以理解成 iOS 中的一個黑色背景的 UILabel 或者 帶點擊事件的 UIButton,并還可以自己設置背景顏色、文本顏色、位置、邊角大小,邊框線條寬度和顏色等等。

說了這么多,如何仿真安卓 Toast 呢?我專門寫了一個DYFToast類,支持橫豎屏切換,支持點擊移除,邊角處理時避免離屏渲染,采用鏈式編程思想,通過點語法操作,實現(xiàn)完全類似安卓的 Toast。

預覽

Toast Preview

安裝

支持通過 CocoaPods 安裝。

# Install lastest version
pod 'DYFToast'

接下來一起閱讀它的使用說明:

使用說明

  • 導入頭文件
#import "DYFToast.h"
  • 默認設置并顯示
- (IBAction)defaultAction:(id)sender {
    Toast().makeText(self.view, "無效的驗證碼", Toastl.LENGTH_SHORT).show();
}
  • 設置位置
//  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 = "網(wǎng)絡連接超時,請重試";
    if (i == 0) {
        type = Gravity.TOP_EDGE;
        message = "網(wǎng)絡連接超時,請重試";
    } 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();
}
  • 設置背景和文本顏色
- (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();
}
  • 設置邊角
- (IBAction)setCornerAction:(id)sender {
    char *message = "Please input email";
    
    Toast().makeText(self.view, message, Toastl.LENGTH_LONG)
    .setGravity(Gravity.BOTTOM)
    .setCorner(20)
    .show();
}
  • 設置邊框
- (IBAction)setBorderAction:(id)sender {
    char *message = "手機號碼格式不正確,請重輸入";
    
    Toast().makeText(self.view, message, Toastl.LENGTH_LONG)
    .setGravity(Gravity.BOTTOM)
    .setBorder(UIColor.orangeColor, 3)
    .show();
}

最后

附上 DYFToast 項目地址,覺得還行呢,麻煩順手給個star。對開發(fā)實現(xiàn) Toast 或者喜歡研究的小伙伴,希望能夠解決你的一些問題。即使不能,也希望能給你提供一些思路。

DYFToast =>【https://github.com/dgynfi/DYFToast


點贊+關(guān)注,第一時間獲取技術(shù)干貨和最新知識點,謝謝你的支持!

最后祝大家生活愉快~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。