1. 程式人生 > >簡單的iOS提示Toast

簡單的iOS提示Toast

最近梳理專案中的Toast,發現應用的場景並不複雜,於是就自己定義了一個Toast替換之前的。 WHToast是一個輕量級的提示控制元件,沒有任何依賴。先來看一下效果圖。 Github地址:github.com/remember17/…

whtoast.gif

使用方法也非常簡單,下面是使用步驟。

1. 可以直接去github下載檔案拖進工程,也可以使用pod。

如果pod找不到WHToast,先執行 pod setup

pod 'WHToast'

// 如果pod找不到WHToast,先執行 pod setup
pod setup
複製程式碼

2. 匯入WHToast.h標頭檔案

// pod
#import <WHToast.h> // 直接拖入檔案 #import "WHToast.h" 複製程式碼

3. 說明

每種顯示型別都有兩個方法,第一個方法預設顯示在螢幕中間,第二個方法帶有originY引數的是可以自定義顯示位置,也就是自定義frame.origin.y。(注意:如果傳入的originY<=0,也是顯示在螢幕中間)。

4. 顯示文字提示。

// 顯示在頁面中間,duration代表多久之後消失
[WHToast showMessage:@"測試一下" duration:2 finishHandler:^{
  NSLog(@"省略n行程式碼");
}];

// 自定義frame.origin.y
[WHToast showMessage:@"測試一下" originY:200 duration:2 finishHandler:^{ NSLog(@"省略n行程式碼"); }]; 複製程式碼

5. 顯示帶有成功圖示的提示。

// 顯示在頁面中間,duration代表多久之後消失
[WHToast showSuccessWithMessage:@"測試一下" duration:2 finishHandler:^{
  NSLog(@"省略n行程式碼");
}];

// 自定義frame.origin.y
[WHToast showSuccessWithMessage:@"測試一下" originY:100
duration:2 finishHandler:^{ NSLog(@"省略n行程式碼"); }]; 複製程式碼

6. 帶有錯誤圖示的提示。

// 顯示在頁面中間,duration代表多久之後消失
[WHToast showErrorWithMessage:@"測試一下" duration:2 finishHandler:^{
  NSLog(@"省略n行程式碼");
}];

// 自定義frame.origin.y
[WHToast showErrorWithMessage:@"測試一下" originY:200 duration
:2 finishHandler:^{
  NSLog(@"省略n行程式碼");
}];
複製程式碼

7. 傳入一個圖片,自定義圖示提示。

// 顯示自定義圖片,如果message傳入nil,則只顯示圖片,duration代表多久之後消失
[WHToast showImage:[UIImage imageNamed:@"123"] message:nil duration:2 finishHandler:^{
  NSLog(@"省略n行程式碼");
}];

// 自定義frame.origin.y,顯示自定義圖片
[WHToast showImage:[UIImage imageNamed:@"123"] message:@"測試一下" originY:200 duration:2 finishHandler:^{
  NSLog(@"省略n行程式碼");
}];
複製程式碼

8. 全域性自定義顯示樣式。

直接使用WHToast的類方法就可以做全域性自定義設定。樣式如下。


/** 是否有背景遮罩,預設有 */
+ (void)setShowMask:(BOOL)showMask;

/** 遮罩顏色,預設透明 */
+ (void)setMaskColor:(UIColor *)maskColor;

/** 遮罩是否遮住導航欄,預設遮住 */
+ (void)setMaskCoverNav:(BOOL)maskCoverNav;

/** 邊距,預設12 */
+ (void)setPadding:(CGFloat)padding;

/** 提示圖片尺寸,預設(25,25)*/
+ (void)setTipImageSize:(CGSize)tipImageSize;

/** 圓角,預設7 */
+ (void)setCornerRadius:(CGFloat)cornerRadius;

/** 背景顏色,預設[UIColor colorWithWhite:0 alpha:0.8] */
+ (void)setBackColor:(UIColor *)backColor;

/** 成功/失敗 圖示顏色,預設白色 */
+ (void)setIconColor:(UIColor *)iconColor;

/** 文字顏色,預設白色 */
+ (void)setTextColor:(UIColor *)textColor;

/** 文字大小,預設15 */
+ (void)setFontSize:(CGFloat)fontSize;

/** 恢復預設配置 */
+ (void)resetConfig;

// 呼叫方式
[WHToast setShowMask:NO];
[WHToast setMaskColor:[UIColor colorWithWhite:0 alpha:0.6]];
[WHToast setMaskCoverNav:NO];
[WHToast setTipImageSize:CGSizeMake(50, 50)];
[WHToast setFontSize:30];
[WHToast setPadding:20];
[WHToast setCornerRadius:20];
[WHToast setIconColor:[UIColor blackColor]];
[WHToast setBackColor:[UIColor whiteColor]];
[WHToast setTextColor:[UIColor blackColor]];

複製程式碼

9. 下面貼出來WHToast的所有方法。


/** 僅文字,展示在螢幕中間 */
+ (void)showMessage:(NSString *)message duration:(NSTimeInterval)duration finishHandler:(dispatch_block_t)handler;

/** 僅文字,自定義frame.origin.y 如果(originY <= 0)會展示在螢幕中間 */
+ (void)showMessage:(NSString *)message originY:(CGFloat)originY duration:(NSTimeInterval)duration finishHandler:(dispatch_block_t)handler;

/** 成功圖示和文字,展示在螢幕中間 */
+ (void)showSuccessWithMessage:(NSString *)message duration:(NSTimeInterval)duration finishHandler:(dispatch_block_t)handler;

/** 成功圖示和文字,自定義frame.origin.y 如果(originY <= 0)會展示在螢幕中間 */
+ (void)showSuccessWithMessage:(NSString *)message originY:(CGFloat)originY duration:(NSTimeInterval)duration finishHandler:(dispatch_block_t)handler;

/** 失敗圖示和文字,展示在螢幕中間 */
+ (void)showErrorWithMessage:(NSString *)message duration:(NSTimeInterval)duration finishHandler:(dispatch_block_t)handler;

/** 失敗圖示和文字,自定義frame.origin.y 如果(originY <= 0)會展示在螢幕中間 */
+ (void)showErrorWithMessage:(NSString *)message originY:(CGFloat)originY duration:(NSTimeInterval)duration finishHandler:(dispatch_block_t)handler;

/** 自定義圖片和文字,展示在螢幕中間。 如果message傳入nil,則只顯示圖片 */
+ (void)showImage:(UIImage *)image message:(NSString *)message duration:(NSTimeInterval)duration finishHandler:(dispatch_block_t)handler;

/** 自定義圖片和文字,自定義frame.origin.y 如果(originY <= 0)會展示在螢幕中間。如果message傳入nil,則只顯示圖片 */
+ (void)showImage:(UIImage *)image message:(NSString *)message originY:(CGFloat)originY duration:(NSTimeInterval)duration finishHandler:(dispatch_block_t)handler;

/** 主動消失 */
+ (void)hide;


/******************************************************/
/******************  設定全域性樣式  **********************/
/******************************************************/

/** 是否有背景遮罩,預設有 */
+ (void)setShowMask:(BOOL)showMask;

/** 遮罩顏色,預設透明 */
+ (void)setMaskColor:(UIColor *)maskColor;

/** 遮罩是否遮住導航欄,預設遮住 */
+ (void)setMaskCoverNav:(BOOL)maskCoverNav;

/** 邊距,預設12 */
+ (void)setPadding:(CGFloat)padding;

/** 提示圖片尺寸,預設(25,25)*/
+ (void)setTipImageSize:(CGSize)tipImageSize;

/** 圓角,預設7 */
+ (void)setCornerRadius:(CGFloat)cornerRadius;

/** 背景顏色,預設[UIColor colorWithWhite:0 alpha:0.8] */
+ (void)setBackColor:(UIColor *)backColor;

/** 成功/失敗 圖示顏色,預設白色 */
+ (void)setIconColor:(UIColor *)iconColor;

/** 文字顏色,預設白色 */
+ (void)setTextColor:(UIColor *)textColor;

/** 文字大小,預設15 */
+ (void)setFontSize:(CGFloat)fontSize;

/** 恢復預設配置 */
+ (void)resetConfig;

複製程式碼

後記

✨✨✨github.com/remember17/…

我的GitHub:github.com/remember17