This commit is contained in:
DDIsFriend
2023-08-23 09:24:40 +08:00
parent 6bd037c5dd
commit 63ca919ed5
494 changed files with 35308 additions and 6623 deletions

View File

@@ -0,0 +1,126 @@
//
// _ImageController.m
// Example_Objc
//
// Created by man 7/25/19.
// Copyright © 2020 man. All rights reserved.
//
#import "_ImageController.h"
#import "_Sandboxer.h"
@interface _ImageController () <UIDocumentInteractionControllerDelegate>
@property (nonatomic, strong) UIImageView *imageView;
@property (nonatomic, strong) UIImage *image;
@property (nonatomic, strong) _FileInfo *fileInfo;
@property (nonatomic, strong) UIDocumentInteractionController *documentInteractionController;
@property (nonatomic, assign) BOOL flag;
@end
@implementation _ImageController
#pragma mark - Getters
- (UIDocumentInteractionController *)documentInteractionController {
if (!_documentInteractionController) {
_documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:self.fileInfo.URL];
_documentInteractionController.delegate = self;
_documentInteractionController.name = self.fileInfo.displayName;
}
return _documentInteractionController;
}
#pragma mark - init
- (instancetype)initWithImage:(UIImage *)image fileInfo:(_FileInfo *)fileInfo {
if (self = [super init]) {
self.image = image;
self.fileInfo = fileInfo;
}
return self;
}
- (void)viewDidLoad {
[super viewDidLoad];
if ([_Sandboxer shared].isShareable) {
UIBarButtonItem *shareItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(sharingAction)];
self.navigationItem.rightBarButtonItem = shareItem;
}
self.view.backgroundColor = [UIColor whiteColor];
self.title = self.fileInfo.displayName;
self.imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.image.size.width, self.image.size.height)];
self.imageView.center = CGPointMake(self.view.center.x, self.view.center.y - self.navigationController.navigationBar.frame.size.height - [[UIApplication sharedApplication] statusBarFrame].size.height);
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
self.imageView.image = self.image;
[self.view addSubview:self.imageView];
}
#pragma mark - touchesBegan
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
self.flag = !self.flag;
if (self.flag)
{
[self.navigationController setNavigationBarHidden:YES animated:YES];
[UIView animateWithDuration:UINavigationControllerHideShowBarDuration animations:^{
self.imageView.center = CGPointMake(self.view.center.x, self.view.center.y);
self.view.backgroundColor = [UIColor blackColor];
}];
}
else
{
[self.navigationController setNavigationBarHidden:NO animated:YES];
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
[UIView animateWithDuration:UINavigationControllerHideShowBarDuration animations:^{
self.imageView.center = CGPointMake(self.view.center.x, self.view.center.y - 111);
self.view.backgroundColor = [UIColor whiteColor];
}];
}
else
{
BOOL iPhoneX = NO;
if (@available(iOS 11.0, *)) {
UIWindow *mainWindow = [[UIApplication sharedApplication] keyWindow];
if (mainWindow.safeAreaInsets.top > 24.0) {
iPhoneX = YES;
}
}
[UIView animateWithDuration:UINavigationControllerHideShowBarDuration animations:^{
self.imageView.center = CGPointMake(self.view.center.x, self.view.center.y - (iPhoneX ? 132 : 96));
self.view.backgroundColor = [UIColor whiteColor];
}];
}
}
}
#pragma mark - UIDocumentInteractionControllerDelegate
- (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller {
return self.navigationController;
}
- (CGRect)documentInteractionControllerRectForPreview:(UIDocumentInteractionController *)controller {
return self.view.bounds;
}
- (UIView *)documentInteractionControllerViewForPreview:(UIDocumentInteractionController *)controller {
return self.view;
}
#pragma mark - target action
- (void)sharingAction {
if (![_Sandboxer shared].isShareable) { return; }
if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) {
[self.documentInteractionController presentOptionsMenuFromBarButtonItem:self.navigationItem.rightBarButtonItem animated:YES];
} else {
[self.documentInteractionController presentOptionsMenuFromRect:CGRectZero inView:self.view animated:YES];
}
}
@end