一句程式碼呼叫提示框

weixin_34413065發表於2017-08-11

效果圖(ps:沒有效果圖,怎麼看的下去)

2100495-bde334396d68f31b.gif
AlertView.gif

前言:只是剛好看到別人App自定義的彈框挺不錯.自己花點時間封裝了一下.支援橫豎屏切換!

介紹:

 -------------------提示框樣式----------------------
   typedef NS_ENUM (NSInteger, FQ_AlertType)
  {
  FQ_AlertTypeActionAlert = 0 ,  //中間
  FQ_AlertTypeActionTop ,        //頂部
  FQ_AlertTypeActionSheet,       //底部
  };

 -------------------Action樣式----------------------
 typedef NS_ENUM (NSInteger, FQ_AlertActionType)
{
FQ_AlertActionStyleDefault = 0, //預設樣式
FQ_AlertActionStyleConfirm,     //確定樣式
FQ_AlertActionStyleDestructive,  //慎重樣式
FQ_AlertActionStyleCancel  //取消樣式
 };  

主要三個類:

1.配置類:FQ_AlertConfiguration.如果需要豐富.可以新增什麼文字邊距等.我做了預設處理

 //FQ_AlertActionStyleDefault = 0, //預設樣式
  @property (strong, nonatomic) UIColor *defaultTextColor;
  @property (strong, nonatomic) UIColor *defaultBackgroundColor;
  @property (strong, nonatomic) UIFont  *defaultTextFont;`
  ......
  @property (assign, nonatomic) CGFloat cornerRadius;
  // 預設的配置項.類屬性.(蘋果相容swift新增的屬性)
  @property (class, nonatomic)  FQ_AlertConfiguration *defaultConfiguration;

2.響應控制元件配置類:FQ_AlertAction.其實就是按鈕

  `  //初始化.
    + (instancetype)actionWithTitle:( NSString *)title type:(FQ_AlertActionType)actionType handler:(void (^)(FQ_AlertAction *action))handler;`

3.展示類:FQ_AlertView.

 /**
  快捷展示多種樣式
  @param title 標題
  @param message 內容資訊
  @param alertType 展示樣式
  @param confirmActionStr 確定Action樣式文字
  @param otherActionStrArr 其他Action樣式文字陣列
  @param destructiveActionStr 刪除Action樣式文字
  @param configuration 配置檔案
  @param actionBlock 點選Action回撥
  @return AlertView
   */
  + (instancetype)showAlertViewWithTitle:(NSString *)title
                             message:(NSString *)message
                           alertType:(FQ_AlertType)alertType
                    confirmActionStr:(NSString *)confirmActionStr
                   otherActionStrArr:(NSArray *)otherActionStrArr
                  destructiveActionStr:(NSString *)destructiveActionStr
                   cancelActionStr:(NSString *)cancelActionStr
                       configuration:(FQ_AlertConfiguration*)configuration
                         actionBlock:(void(^)(FQ_AlertAction * action))actionBlock;

其他類

1.管理類:FQ_AlertViewManager.保證當前介面只顯示一個FQAlertView控制元件.一般情況下沒有同時出現的情況.

2.工具類:FQ_AlertWindowVc.彈框ContentView使用UIWindow.在處理橫豎屏切換時用到.

使用:

1.快捷建立方式:一句程式碼搞定

    [FQ_AlertView showAlertViewWithTitle:@"可以的"  message:@"取消關注以後!您將再也收不到該使用者的所有動態?"  alertType:FQ_AlertTypeActionSheet confirmActionStr:@"確定" otherActionStrArr:nil destructiveActionStr:nil cancelActionStr:@"取消" configuration:nil actionBlock:^(FQ_AlertAction *action) {
        NSLog(@"action= %@",action.title); //根據字串比較找到對應的Action事件做處理
       }];

2.自定義方式建立:(借鑑蘋果建立方式)

    FQ_AlertView * alertView =  [FQ_AlertView showAlertViewWithTitle:@"確定?" message:@"隨便打得XXXXXXXXXXXXXXXXXXXX,可以嗎?" alertType:FQ_AlertTypeActionSheet configuration:nil];
    FQ_AlertAction * test = [FQ_AlertAction actionWithTitle:@"拍攝" type:FQ_AlertActionStyleConfirm handler:^(FQ_AlertAction *action) {
        NSLog(@"點選拍攝");
    }];
    FQ_AlertAction * test1 = [FQ_AlertAction actionWithTitle:@"從手機相簿選擇" type:FQ_AlertActionStyleConfirm handler:^(FQ_AlertAction *action) {
        NSLog(@"點選從手機相簿選擇");
    }];
    FQ_AlertAction * test2 = [FQ_AlertAction actionWithTitle:@"取消" type:FQ_AlertActionStyleCancel handler:^(FQ_AlertAction *action) {
        NSLog(@"點選取消");
    }];
    [alertView addAction:test];
    [alertView addAction:test1];
    [alertView addAction:test2];
    [alertView showAlertView];

END:暫未上傳至github賬號!需要請留言!

相關文章