HWPanModalHeight.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. //
  2. // HWPanModalHeight.h
  3. // Pods
  4. //
  5. // Created by heath wang on 2019/4/26.
  6. //
  7. #import <UIKit/UIKit.h>
  8. #import <Foundation/Foundation.h>
  9. typedef NS_ENUM(NSInteger, PanModalHeightType) {
  10. PanModalHeightTypeMax NS_SWIFT_NAME(max), // from top max
  11. PanModalHeightTypeMaxTopInset NS_SWIFT_NAME(topInset), // from top offset
  12. PanModalHeightTypeContent NS_SWIFT_NAME(content), // from bottom
  13. PanModalHeightTypeContentIgnoringSafeArea NS_SWIFT_NAME(contentIgnoringSafeArea), // from bottom ignore safeArea
  14. PanModalHeightTypeIntrinsic NS_SWIFT_NAME(intrinsic), // auto get size, There is something wrong, DO NOT recommend to use.
  15. };
  16. struct PanModalHeight {
  17. PanModalHeightType heightType NS_SWIFT_NAME(type);
  18. CGFloat height;
  19. };
  20. typedef struct PanModalHeight PanModalHeight;
  21. /**
  22. * When heightType is PanModalHeightTypeMax, PanModalHeightTypeIntrinsic, the height value will be ignored.
  23. */
  24. CG_INLINE PanModalHeight PanModalHeightMake(PanModalHeightType heightType, CGFloat height) {
  25. PanModalHeight modalHeight;
  26. modalHeight.heightType = heightType;
  27. modalHeight.height = height;
  28. return modalHeight;
  29. }
  30. struct HWPanModalShadow {
  31. UIColor *shadowColor;
  32. CGFloat shadowRadius;
  33. CGSize shadowOffset;
  34. float shadowOpacity;
  35. };
  36. typedef struct HWPanModalShadow HWPanModalShadow;
  37. CG_INLINE HWPanModalShadow PanModalShadowMake(UIColor *shadowColor, CGFloat shadowRadius, CGSize shadowOffset, float shadowOpacity) {
  38. HWPanModalShadow shadowConfig;
  39. shadowConfig.shadowColor = shadowColor;
  40. shadowConfig.shadowRadius = shadowRadius;
  41. shadowConfig.shadowOffset = shadowOffset;
  42. shadowConfig.shadowOpacity = shadowOpacity;
  43. return shadowConfig;
  44. }
  45. CG_INLINE HWPanModalShadow PanModalShadowNil() {
  46. return PanModalShadowMake([UIColor clearColor], 0, CGSizeZero, 0);
  47. }
  48. static inline BOOL HW_FLOAT_IS_ZERO(CGFloat value) {
  49. return (value > -FLT_EPSILON) && (value < FLT_EPSILON);
  50. }
  51. static inline BOOL HW_TWO_FLOAT_IS_EQUAL(CGFloat x, CGFloat y) {
  52. CGFloat minusValue = fabs(x - y);
  53. CGFloat criticalValue = 0.0001;
  54. if (minusValue < criticalValue || minusValue < FLT_MIN) {
  55. return YES;
  56. }
  57. return NO;
  58. }