12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- //
- // QMUIImagePreviewViewController+RQExtension.m
- // jiaPei
- //
- // Created by 张嵘 on 2022/9/14.
- // Copyright © 2022 JCZ. All rights reserved.
- //
- #import "QMUIImagePreviewViewController+RQExtension.h"
- #import <objc/runtime.h>
- @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
|