全部产品
云市场
云游戏

提示弹窗

更新时间:2019-09-26 18:39:51

  • AUNoticeDialog 为普通 Dialog 样式,参考自系统 AlertView 但是不带 blur 背景。
  • window 层级:self.windowLevel = UIWindowLevelAlert - 1。

效果图

接口说明

  1. /**
  2. 普通 Dialog ,同系统样式不带 blur 背景
  3. */
  4. @interface AUNoticeDialog : AUDialogBaseView
  5. /**
  6. 不带按钮标题的初始化方法。
  7. @param title 标题
  8. @param message 消息内容
  9. @return AUNoticeDialog 实例
  10. */
  11. - (instancetype)initWithTitle:(NSString *)title
  12. message:(NSString *)message;
  13. /**
  14. 带按钮标题的初始化方法。
  15. @param title 标题
  16. @param message 消息内容
  17. @param delegate 协议对象(遵循 AUDialogDelegate)
  18. @param buttonTitle 按钮标题列表
  19. @return AUNoticeDialog 实例
  20. */
  21. - (instancetype)initWithTitle:(NSString *)title
  22. message:(NSString *)message
  23. delegate:(id<AUDialogDelegate>)delegate
  24. buttonTitles:(NSString *)buttonTitle, ... NS_REQUIRES_NIL_TERMINATION;
  25. - (instancetype)initWithCustomView:(UIView *)customView; // 自定义内容区域
  26. - (instancetype)init NS_UNAVAILABLE;
  27. /**
  28. Dialog 展示方法。
  29. */
  30. - (void)show;
  31. /**
  32. 添加按钮以及其回调方法。
  33. @param buttonTitle 按钮标题
  34. @param actionBlock 按钮点击回调
  35. */
  36. - (void)addButton:(NSString *)buttonTitle actionBlock:(AUDialogActionBlock)actionBlock;
  37. /**
  38. Dialog 消失方法,类似APAlertView的dismissWithClickedButtonIndex方法
  39. */
  40. - (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated;
  41. /**
  42. 设置文本对齐
  43. @param alignment 对齐参数
  44. */
  45. - (void)setMessageAlignment:(NSTextAlignment)alignment;

全新接入

  • 使用 block 添加 button 点击回调

    1. AUNoticeDialog *dialog = [[AUNoticeDialog alloc] initWithTitle:@"标题" message:@"内容"];
    2. [dialog addButton:@"知道了" actionBlock:^{
    3. NSLog(@"print pressed")
    4. }];
    5. [dialog addButton:@"好的" actionBlock:nil];
    6. [dialog show];
  • 使用 delegate 添加 button 点击回调

    1. AUNoticeDialog *dialog = [[AUNoticeDialog alloc] initWithTitle:@"标题" message:@"内容" delegate:delegate buttonTitles:@"确定", nil];
    2. [dialog show];
    3. delegate协议为AUDialogDelegate(类似UIAlertViewDelegate
  • 简便方法接入

    1. NS_INLINE AUNoticeDialog *AUNoticeDialogWithTitle(NSString *title)
    2. NS_INLINE AUNoticeDialog *AUNoticeDialogWithTitleAndMessage(NSString *title, NSString *message)

APAlertView 与 UIAlertView 接入

以前主要为 APAlertView 和 UIAlertView,本节介绍如何更改为 AUNoticeDialog。

为了更简单的从 APAlertView 和 UIAlertView 接入 AUNoticeDialog,大部分接口均做了支持,因此大多数情况下只需要更改类名即可,具体如下:

  • AUNoticeDialog 支持 APAlertView 的创建接口
  1. - (instancetype)initWithTitle:(NSString *)title
  2. message:(NSString *)message
  3. delegate:(id<AUDialogDelegate>)delegate
  4. cancelButtonTitle:(NSString *)cancelButtonTitle
  5. otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION;

创建时,更改类名即可,只需将 [[APAlertView alloc] initWithxxxxxx] 改为 [[AUNoticeDialog alloc] initWithxxxxxx]

  • 使用如下方法创建 UIAlertView,无需更改,因为接口中已做了更改
  1. NS_INLINE UIAlertView *UIAlertViewWithTitleAndMessage(NSString *title, NSString *message)
  2. //
  3. NS_INLINE UIAlertView *UIAlertViewWithTitle(NSString *title)
  4. NS_INLINE UIAlertView *UIAlertViewWithMessage(NSString *message)
  • 支持 APAlertView 的 addButtonWithTitle 接口,接入时 无需更改
  1. - (NSInteger)addButtonWithTitle:(NSString *)title callback:(void (^)(int index, NSString *title))callback;
  2. /**
  3. @brief 添加取消 Button 和回调
  4. @param title 按钮 title
  5. @param callback 回调的 callback
  6. */
  7. - (NSInteger)addCancelButtonWithTitle:(NSString *)title callback:(void (^)(int index, NSString *title))callback;
  8. /**
  9. @brief 添加 Button
  10. @param title 按钮 title
  11. */
  12. - (NSInteger)addButtonWithTitle:(NSString *)title;
  13. /**
  14. @brief 添加取消 button
  15. @param title 按钮 title
  16. */
  17. - (NSInteger)addCancelButtonWithTitle:(NSString *)title;
  18. +(void)setBackgroundMode:(BOOL)isBackMode;
  • 使用如下 UIAlertView 方法也 无需更改,AUNoticeDialog 有同名方法支持
  1. /**
  2. Dialog 消失方法,类似 APAlertView 的 dismissWithClickedButtonIndex 方法
  3. */
  4. - (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated
  5. - (nullable NSString *)buttonTitleAtIndex:(NSInteger)buttonIndex;
  6. /**
  7. 有多少个按钮(类似 APAlertView的numberOfButtons)
  8. */
  9. @property(nonatomic,readonly) NSInteger numberOfButtons;
  10. /**
  11. 取消按钮的 index(类似 APAlertView的cancelButtonIndex)
  12. */
  13. @property(nonatomic) NSInteger cancelButtonIndex;
  • 调用 APAlertView 的如下接口需要变更为其他方法,只需更改方法名

    • showAlert 方法改为 show方法

      如:[alertView showAlert] ==> [alertView show]

    • removeAllAlerviews 方法改为 dismissAll 方法

      如:[APAlertView removeAllAlerviews] ==> [AUNoticeDialog dismissAll]

  • 如果使用了 APAlertView 或者 UIAlertView 的输入框功能,请使用 AUInputDialog 替换,使用方法与 AUNoticeDialog 基本相同

    : 类文件为 AUInputDialog.h。

UIAlertController 接入

  • 创建方法修改,如:

    1. [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert]
    2. 修改为
    3. [[AUNoticeDialog alloc] initWithTitle:@"标题" message:@"内容"]
  • 添加button和事件修改:

    1. [UIAlertAction actionWithTitle:title style:(UIAlertActionStyle)style handler:handler]
    2. 修改为
    3. [dialog addButton:@"知道了" actionBlock:^{
    4. NSLog(@"xxxx");
    5. }]

代码示例

  • 标准样式:

    1. AUNoticeDialog *dialog = [[AUNoticeDialog alloc] initWithTitle:@"标准控件" message:@"两个平台的同类控件命名需完全一样,控件命名以\"AU\"为前缀,控件自定义属性全部采用驼峰命名。注意:某些控件可能存在平台差别,一个平台需要实现另外一个平台不需要实现。"];
    2. [dialog addButton:@"知道了" actionBlock:nil];
    3. [dialog addButton:@"好的" actionBlock:nil];
    4. [dialog show];
  • 自定义样式:

    1. UIView *customView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 240, 60)];
    2. customView.backgroundColor = [UIColor greenColor];
    3. AUNoticeDialog *dialog = [[AUNoticeDialog alloc] initWithCustomView:customView];
    4. [dialog addButton:@"取消" actionBlock:nil];
    5. [dialog addButton:@"确定" actionBlock:nil];
    6. [dialog show];