// // QMUIImagePreviewViewController+RQExtension.m // jiaPei // // Created by 张嵘 on 2022/9/14. // Copyright © 2022 JCZ. All rights reserved. // #import "QMUIImagePreviewViewController+RQExtension.h" #import @implementation QMUIImagePreviewViewController (RQExtension) + (void)load { // 方法交换,为的是当系统调用viewDidLoad时候,调用的是我们的my_viewDidLoad方法 static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ Class class = [self class]; SEL originalSelector = @selector(cancelDismissingGesture); SEL swizzledSelector = @selector(my_cancelDismissingGesture); Method originalMethod = class_getInstanceMethod(class, originalSelector); Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector); BOOL success = class_addMethod(class, originalSelector, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod)); if (success) { class_replaceMethod(class, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod)); } else { method_exchangeImplementations(originalMethod, swizzledMethod); } }); } // 手势判定失败,恢复到手势前的状态 - (void)my_cancelDismissingGesture { @weakify(self) self.statusBarHidden = YES; [UIView animateWithDuration:.2 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ @strongify(self) [self setNeedsStatusBarAppearanceUpdate]; [self resetDismissingGesture]; } completion:NULL]; } @end