mirror of
				https://github.com/SoPat712/YTLitePlus.git
				synced 2025-10-31 12:54:14 -04:00 
			
		
		
		
	added files via upload
This commit is contained in:
		
							
								
								
									
										147
									
								
								Tweaks/FLEX/ViewHierarchy/FLEXImagePreviewViewController.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										147
									
								
								Tweaks/FLEX/ViewHierarchy/FLEXImagePreviewViewController.m
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,147 @@ | ||||
| // | ||||
| //  FLEXImagePreviewViewController.m | ||||
| //  Flipboard | ||||
| // | ||||
| //  Created by Ryan Olson on 6/12/14. | ||||
| //  Copyright (c) 2020 FLEX Team. All rights reserved. | ||||
| // | ||||
|  | ||||
| #import "FLEXImagePreviewViewController.h" | ||||
| #import "FLEXUtility.h" | ||||
| #import "FLEXColor.h" | ||||
| #import "FLEXResources.h" | ||||
|  | ||||
| @interface FLEXImagePreviewViewController () <UIScrollViewDelegate> | ||||
| @property (nonatomic) UIImage *image; | ||||
| @property (nonatomic) UIScrollView *scrollView; | ||||
| @property (nonatomic) UIImageView *imageView; | ||||
| @property (nonatomic) UITapGestureRecognizer *bgColorTapGesture; | ||||
| @property (nonatomic) NSInteger backgroundColorIndex; | ||||
| @property (nonatomic, readonly) NSArray<UIColor *> *backgroundColors; | ||||
| @end | ||||
|  | ||||
| #pragma mark - | ||||
| @implementation FLEXImagePreviewViewController | ||||
|  | ||||
| #pragma mark Initialization | ||||
|  | ||||
| + (instancetype)previewForView:(UIView *)view { | ||||
|     return [self forImage:[FLEXUtility previewImageForView:view]]; | ||||
| } | ||||
|  | ||||
| + (instancetype)previewForLayer:(CALayer *)layer { | ||||
|     return [self forImage:[FLEXUtility previewImageForLayer:layer]]; | ||||
| } | ||||
|  | ||||
| + (instancetype)forImage:(UIImage *)image { | ||||
|     return [[self alloc] initWithImage:image]; | ||||
| } | ||||
|  | ||||
| - (id)initWithImage:(UIImage *)image { | ||||
|     NSParameterAssert(image); | ||||
|      | ||||
|     self = [super init]; | ||||
|     if (self) { | ||||
|         self.title = @"Preview"; | ||||
|         self.image = image; | ||||
|         _backgroundColors = @[FLEXResources.checkerPatternColor, UIColor.whiteColor, UIColor.blackColor]; | ||||
|     } | ||||
|      | ||||
|     return self; | ||||
| } | ||||
|  | ||||
|  | ||||
| #pragma mark Lifecycle | ||||
|  | ||||
| - (void)viewDidLoad { | ||||
|     [super viewDidLoad]; | ||||
|      | ||||
|     self.imageView = [[UIImageView alloc] initWithImage:self.image]; | ||||
|     self.scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds]; | ||||
|     self.scrollView.delegate = self; | ||||
|     self.scrollView.backgroundColor = self.backgroundColors.firstObject; | ||||
|     self.scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; | ||||
|     [self.scrollView addSubview:self.imageView]; | ||||
|     self.scrollView.contentSize = self.imageView.frame.size; | ||||
|     self.scrollView.minimumZoomScale = 1.0; | ||||
|     self.scrollView.maximumZoomScale = 2.0; | ||||
|     [self.view addSubview:self.scrollView]; | ||||
|      | ||||
|     self.bgColorTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(changeBackground)]; | ||||
|     [self.scrollView addGestureRecognizer:self.bgColorTapGesture]; | ||||
|      | ||||
|     self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] | ||||
|         initWithBarButtonSystemItem:UIBarButtonSystemItemAction | ||||
|         target:self | ||||
|         action:@selector(actionButtonPressed:) | ||||
|     ]; | ||||
| } | ||||
|  | ||||
| - (void)viewDidLayoutSubviews { | ||||
|     [self centerContentInScrollViewIfNeeded]; | ||||
| } | ||||
|  | ||||
|  | ||||
| #pragma mark UIScrollViewDelegate | ||||
|  | ||||
| - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { | ||||
|     return self.imageView; | ||||
| } | ||||
|  | ||||
| - (void)scrollViewDidZoom:(UIScrollView *)scrollView { | ||||
|     [self centerContentInScrollViewIfNeeded]; | ||||
| } | ||||
|  | ||||
|  | ||||
| #pragma mark Private | ||||
|  | ||||
| - (void)centerContentInScrollViewIfNeeded { | ||||
|     CGFloat horizontalInset = 0.0; | ||||
|     CGFloat verticalInset = 0.0; | ||||
|     if (self.scrollView.contentSize.width < self.scrollView.bounds.size.width) { | ||||
|         horizontalInset = (self.scrollView.bounds.size.width - self.scrollView.contentSize.width) / 2.0; | ||||
|     } | ||||
|     if (self.scrollView.contentSize.height < self.scrollView.bounds.size.height) { | ||||
|         verticalInset = (self.scrollView.bounds.size.height - self.scrollView.contentSize.height) / 2.0; | ||||
|     } | ||||
|     self.scrollView.contentInset = UIEdgeInsetsMake(verticalInset, horizontalInset, verticalInset, horizontalInset); | ||||
| } | ||||
|  | ||||
| - (void)changeBackground { | ||||
|     self.backgroundColorIndex++; | ||||
|     self.backgroundColorIndex %= self.backgroundColors.count; | ||||
|     self.scrollView.backgroundColor = self.backgroundColors[self.backgroundColorIndex]; | ||||
| } | ||||
|  | ||||
| - (void)actionButtonPressed:(id)sender { | ||||
|     static BOOL canSaveToCameraRoll = NO, didShowWarning = NO; | ||||
|     static dispatch_once_t onceToken; | ||||
|     dispatch_once(&onceToken, ^{ | ||||
|         if (UIDevice.currentDevice.systemVersion.floatValue < 10) { | ||||
|             canSaveToCameraRoll = YES; | ||||
|             return; | ||||
|         } | ||||
|          | ||||
|         NSBundle *mainBundle = NSBundle.mainBundle; | ||||
|         if ([mainBundle.infoDictionary.allKeys containsObject:@"NSPhotoLibraryUsageDescription"]) { | ||||
|             canSaveToCameraRoll = YES; | ||||
|         } | ||||
|     }); | ||||
|      | ||||
|     UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:@[self.image] applicationActivities:@[]]; | ||||
|      | ||||
|     if (!canSaveToCameraRoll && !didShowWarning) { | ||||
|         didShowWarning = YES; | ||||
|         NSString *msg = @"Add 'NSPhotoLibraryUsageDescription' to this app's Info.plist to save images."; | ||||
|         [FLEXAlert makeAlert:^(FLEXAlert *make) { | ||||
|             make.title(@"Reminder").message(msg); | ||||
|             make.button(@"OK").handler(^(NSArray<NSString *> *strings) { | ||||
|                 [self presentViewController:activityVC animated:YES completion:nil]; | ||||
|             }); | ||||
|         } showFrom:self]; | ||||
|     } else { | ||||
|         [self presentViewController:activityVC animated:YES completion:nil]; | ||||
|     } | ||||
| } | ||||
|  | ||||
| @end | ||||
		Reference in New Issue
	
	Block a user
	 Balackburn
					Balackburn