상태 표시줄 클릭 끝
사용자 정의 윈도우가 상태 표시줄에 덮여 있습니다. 이전에 오류가 발생한 적이 있습니다. rootViewController가 없기 때문입니다. 나중에 dispatch_after는 괜찮아요.
//
// BSTopWindow.m
//
//
// Created by lxy on 16/6/6.
// Copyright © 2016 lxy. All rights reserved.
//
#import "BSTopWindow.h"
@implementation BSTopWindow
//
static UIWindow *_window;
//
+ (void)hide {
_window.hidden = YES;
}
//
+ (void)show {
//
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.25 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
_window = [[UIWindow alloc] init];
_window.windowLevel = UIWindowLevelAlert;
_window.frame = [UIApplication sharedApplication].statusBarFrame;
_window.backgroundColor = [UIColor clearColor];
_window.hidden = NO;
[_window addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(topWindowClick)]];
});
}
/**
* ,
*/
+ (void)topWindowClick {
UIWindow *window = [UIApplication sharedApplication].keyWindow;
[self searchScrollViewInView:window];
}
// ,
+ (void)searchScrollViewInView:(UIView *)superView {
for (UIScrollView *subview in superView.subviews) {
// subView frame, nil , ,subview.frame subview.superview
CGRect newFrame = [subview.superview convertRect:subview.frame toView:[UIApplication sharedApplication].keyWindow];
//
// CGRect newFrame = [subview.superview convertRect:subview.frame toView:nil];
BOOL isShowingOnWindow = subview.window == [UIApplication sharedApplication].keyWindow && !subview.isHidden && subview.alpha > 0.01 && CGRectIntersectsRect(newFrame, winBounds);
// scrollView,
if ([subview isKindOfClass:[UIScrollView class]] && isShowingOnWindow) {
CGPoint offset = subview.contentOffset;
offset.y = -subview.contentInset.top;
[subview setContentOffset:offset animated:YES];
}
//
[self searchScrollViewInView:subview];
}
}
@end
다른 컨트롤러의viewDidAppear에서 숨기기
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[BSTopWindow hide];
}
화면으로 돌아가서 표시해 주세요.
- (IBAction)backLogin {
[BSTopWindow show];
[self dismissViewControllerAnimated:YES completion:nil];
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.