FLEXLayerShortcuts.m 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. //
  2. // FLEXLayerShortcuts.m
  3. // FLEX
  4. //
  5. // Created by Tanner Bennett on 12/12/19.
  6. // Copyright © 2019 Flipboard. All rights reserved.
  7. //
  8. #import "FLEXLayerShortcuts.h"
  9. #import "FLEXImagePreviewViewController.h"
  10. @interface FLEXLayerShortcuts ()
  11. @property (nonatomic, readonly) CALayer *layer;
  12. @end
  13. @implementation FLEXLayerShortcuts
  14. #pragma mark - Internal
  15. - (CALayer *)layer {
  16. return self.object;
  17. }
  18. #pragma mark - Internal
  19. - (UIViewController *)imagePreviewViewController {
  20. if (!CGRectIsEmpty(self.layer.bounds)) {
  21. UIGraphicsBeginImageContextWithOptions(self.layer.bounds.size, NO, 0.0);
  22. CGContextRef imageContext = UIGraphicsGetCurrentContext();
  23. [self.layer renderInContext:imageContext];
  24. UIImage *previewImage = UIGraphicsGetImageFromCurrentImageContext();
  25. UIGraphicsEndImageContext();
  26. return [FLEXImagePreviewViewController forImage:previewImage];
  27. }
  28. return nil;
  29. }
  30. #pragma mark - Overrides
  31. + (instancetype)forObject:(CALayer *)layer {
  32. return [self forObject:layer additionalRows:@[@"Preview"]];
  33. }
  34. - (UIViewController *)viewControllerToPushForRow:(NSInteger)row {
  35. if (row == 0) {
  36. return [self imagePreviewViewController];
  37. }
  38. return [super viewControllerToPushForRow:row];
  39. }
  40. @end