You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
2.8 KiB

  1. //
  2. // FLEXUtility.h
  3. // Flipboard
  4. //
  5. // Created by Ryan Olson on 4/18/14.
  6. // Copyright (c) 2014 Flipboard. All rights reserved.
  7. //
  8. #import <Availability.h>
  9. #import <AvailabilityInternal.h>
  10. #import <Foundation/Foundation.h>
  11. #import <UIKit/UIKit.h>
  12. #import <objc/runtime.h>
  13. #define FLEXFloor(x) (floor([[UIScreen mainScreen] scale] * (x)) / [[UIScreen mainScreen] scale])
  14. #if defined(__IPHONE_11_0)
  15. #define FLEX_AT_LEAST_IOS11_SDK (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_11_0)
  16. #else
  17. #define FLEX_AT_LEAST_IOS11_SDK NO
  18. #endif
  19. @interface FLEXUtility : NSObject
  20. + (UIColor *)consistentRandomColorForObject:(id)object;
  21. + (NSString *)descriptionForView:(UIView *)view includingFrame:(BOOL)includeFrame;
  22. + (NSString *)stringForCGRect:(CGRect)rect;
  23. + (UIViewController *)viewControllerForView:(UIView *)view;
  24. + (UIViewController *)viewControllerForAncestralView:(UIView *)view;
  25. + (NSString *)detailDescriptionForView:(UIView *)view;
  26. + (UIImage *)circularImageWithColor:(UIColor *)color radius:(CGFloat)radius;
  27. + (UIColor *)scrollViewGrayColor;
  28. + (UIColor *)hierarchyIndentPatternColor;
  29. + (NSString *)applicationImageName;
  30. + (NSString *)applicationName;
  31. + (NSString *)safeDescriptionForObject:(id)object;
  32. + (NSString *)addressOfObject:(id)object;
  33. + (UIFont *)defaultFontOfSize:(CGFloat)size;
  34. + (UIFont *)defaultTableViewCellLabelFont;
  35. + (NSString *)stringByEscapingHTMLEntitiesInString:(NSString *)originalString;
  36. + (UIInterfaceOrientationMask)infoPlistSupportedInterfaceOrientationsMask;
  37. + (NSString *)searchBarPlaceholderText;
  38. + (BOOL)isImagePathExtension:(NSString *)extension;
  39. + (UIImage *)thumbnailedImageWithMaxPixelDimension:(NSInteger)dimension fromImageData:(NSData *)data;
  40. + (NSString *)stringFromRequestDuration:(NSTimeInterval)duration;
  41. + (NSString *)statusCodeStringFromURLResponse:(NSURLResponse *)response;
  42. + (BOOL)isErrorStatusCodeFromURLResponse:(NSURLResponse *)response;
  43. + (NSDictionary<NSString *, id> *)dictionaryFromQuery:(NSString *)query;
  44. + (NSString *)prettyJSONStringFromData:(NSData *)data;
  45. + (BOOL)isValidJSONData:(NSData *)data;
  46. + (NSData *)inflatedDataFromCompressedData:(NSData *)compressedData;
  47. + (NSArray<UIWindow *> *)allWindows;
  48. + (void)alert:(NSString *)title message:(NSString *)message from:(UIViewController *)viewController;
  49. // Swizzling utilities
  50. + (SEL)swizzledSelectorForSelector:(SEL)selector;
  51. + (BOOL)instanceRespondsButDoesNotImplementSelector:(SEL)selector class:(Class)cls;
  52. + (void)replaceImplementationOfKnownSelector:(SEL)originalSelector onClass:(Class)class withBlock:(id)block swizzledSelector:(SEL)swizzledSelector;
  53. + (void)replaceImplementationOfSelector:(SEL)selector withSelector:(SEL)swizzledSelector forClass:(Class)cls withMethodDescription:(struct objc_method_description)methodDescription implementationBlock:(id)implementationBlock undefinedBlock:(id)undefinedBlock;
  54. @end