PBStackView.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. //
  2. // PBStackView.h
  3. // Flex
  4. //
  5. // Created by LStar on 2021/1/29.
  6. // Copyright © 2021 刘星辰. All rights reserved.
  7. //
  8. #import <UIKit/UIKit.h>
  9. @class PBFlexBoxLayout;
  10. @interface PBStackView : UIStackView
  11. /// 带位置布局block的添加view
  12. /// @param handle view的block
  13. /// @param layoutHandle 位置布局block
  14. - (void)addArrangedSubview:(UIView *(^)(void))handle
  15. layout:(void (^)(PBFlexBoxLayout * layout))layoutHandle;
  16. /// 更新view的位置block
  17. /// @param view 目标view
  18. /// @param layoutHandle 位置布局block
  19. - (void)updateArrangedSubview:(UIView *)view layout:(void (^)(PBFlexBoxLayout * layout))layoutHandle;
  20. /// 插入view
  21. /// @param handle view的block
  22. /// @param stackIndex 插入的下标
  23. /// @param layoutHandle 位置布局block
  24. - (void)insertArrangedSubview:(UIView *(^)(void))handle
  25. atIndex:(NSUInteger)stackIndex
  26. layout:(void (^)(PBFlexBoxLayout * layout))layoutHandle;
  27. @end
  28. @interface PBRowBox : PBStackView
  29. @end
  30. @interface PBColumnBox : PBStackView
  31. @end
  32. @interface PBFlexBoxLayout : NSObject
  33. /// 水平方向:左间距 垂直方向:上间距
  34. @property (nonatomic,assign)CGFloat leading;
  35. /// 水平方向:右间距 垂直方向:下间距
  36. @property (nonatomic,assign)CGFloat trailing;
  37. /// 控件的宽度 默认是:CGFLOAT_MAX
  38. @property (nonatomic,assign)CGFloat width;
  39. /// 控件的高度 默认是:CGFLOAT_MAX
  40. @property (nonatomic,assign)CGFloat height;
  41. @end
  42. @interface PBFlexBoxSpring : UIView
  43. @end
  44. @interface UIView(PBStackView)
  45. /// 更新view的位置block
  46. /// @param layoutHandle 位置布局block
  47. - (void)updateBoxLayout:(void (^)(PBFlexBoxLayout * layout))layoutHandle;
  48. @end