ZZDialog.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. //
  2. // ZZDialog.h
  3. // FBSnapshotTestCase
  4. //
  5. // Created by Max on 2021/1/12.
  6. //
  7. #import <UIKit/UIKit.h>
  8. #import "ZZUIKitConst.h"
  9. NS_ASSUME_NONNULL_BEGIN
  10. typedef NS_ENUM(NSUInteger, ZZDialogCancelPosition) {
  11. //一半在外边
  12. ZZDialogCancelPositionHalfOutside = 0,
  13. //在右上角
  14. ZZDialogCancelPositionTopRight,
  15. //再底部中间
  16. ZZDialogCancelPositionBottomOutside,
  17. };
  18. struct ZZDialogCancelMargin{
  19. CGFloat paddingTop;
  20. CGFloat paddingRight;
  21. };
  22. typedef struct CG_BOXABLE ZZDialogCancelMargin ZZDialogCancelMargin;
  23. CG_INLINE ZZDialogCancelMargin
  24. ZZDialogCancelMarginMake(CGFloat top, CGFloat right)
  25. {
  26. ZZDialogCancelMargin margin;
  27. margin.paddingTop = top;
  28. margin.paddingRight = right;
  29. return margin;
  30. }
  31. @class ZZDialog;
  32. @protocol ZZDialogContenDelegate<NSObject>
  33. -(CGRect)preferredFrameForContentInDialog:(ZZDialog *)dialog;
  34. -(__kindof UIView *)viewForContentInDialog:(ZZDialog *)dialog;
  35. @end
  36. @protocol ZZDialogHandleDelegate<NSObject>
  37. -(CGRect)preferredFrameForHandleInDialog:(ZZDialog *)dialog;
  38. -(NSArray<NSDictionary*> *)itemsForHandleInDialog:(ZZDialog *)dialog;
  39. @end
  40. @interface ZZDialog : UIView
  41. @property(nonatomic,weak,nullable) id<ZZDialogContenDelegate> contentDelegate;
  42. @property(nonatomic,weak,nullable) id<ZZDialogHandleDelegate> handleDelegate;
  43. /// content的view
  44. @property(nonatomic,strong) UIView *contentView;
  45. @property(nonatomic,strong) UIStackView *handleView;
  46. /// cancelImg cancelBtn 二选一
  47. @property(nonatomic,strong,nullable) UIImage *cancelImg;
  48. /// cancelBtn cancelBtn 二选一
  49. @property(nonatomic,strong,nullable) UIButton *cancelBtn;
  50. @property(nonatomic,assign) ZZDialogCancelMargin cancelMargin;
  51. @property(nonatomic,assign) ZZDialogCancelPosition cancelPosition;
  52. -(void)dismiss;
  53. -(void)dismissThen:(void(^)(void))todo;
  54. @end
  55. NS_ASSUME_NONNULL_END