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.
|
|
// // FLEXImagePreviewViewController.m // Flipboard // // Created by Ryan Olson on 6/12/14. // Copyright (c) 2014 Flipboard. All rights reserved. //
#import "FLEXColor.h" #import "FLEXImagePreviewViewController.h" #import "FLEXUtility.h"
@interface FLEXImagePreviewViewController () <UIScrollViewDelegate>
@property (nonatomic) UIImage *image;
@property (nonatomic) UIScrollView *scrollView; @property (nonatomic) UIImageView *imageView;
@end
@implementation FLEXImagePreviewViewController
+ (instancetype)forImage:(UIImage *)image { return [[self alloc] initWithImage:image]; }
- (id)initWithImage:(UIImage *)image { self = [super initWithNibName:nil bundle:nil]; if (self) { self.title = @"Preview"; self.image = image; } return self; }
- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [FLEXColor scrollViewBackgroundColor]; self.imageView = [[UIImageView alloc] initWithImage:self.image]; self.scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds]; self.scrollView.delegate = self; self.scrollView.backgroundColor = self.view.backgroundColor; 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.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(actionButtonPressed:)]; }
- (void)viewDidLayoutSubviews { [self centerContentInScrollViewIfNeeded]; }
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { return self.imageView; }
- (void)scrollViewDidZoom:(UIScrollView *)scrollView { [self centerContentInScrollViewIfNeeded]; }
- (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)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) { activityVC.excludedActivityTypes = @[UIActivityTypeSaveToCameraRoll];
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
|