点击状态栏返回

<pre name="code" class="objc">//
//  HQWindowBack.m
//  FunnySister
//
//  Created by hq on 16/5/5.
//  Copyright © 2016年 hanqing. All rights reserved.
//

#import "HQWindowBack.h"

@implementation HQWindowBack

//+不能访问属性,因此我们使用全局变量
static UIWindow *window_;

+(void)initialize{

    UIViewController* vc = [[UIViewController alloc]initWithNibName:nil bundle:nil];
    
    window_=[[UIWindow alloc] init];
    
    window_.frame=CGRectMake(0, 0, HQScreenWidth, 20);
    
    window_.windowLevel=UIWindowLevelStatusBar;
    
    window_.backgroundColor=[UIColor clearColor];
    
    //必须设置一个rootView,否则会崩溃
    window_.rootViewController=vc;
    
    //为window添加手势,点击之后返回顶部
    [window_ addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(scrollToTop)]];
}


+(void) scrollToTop{
   
    UIWindow *keyWindow=[UIApplication sharedApplication].keyWindow;
    
    [self searchScrollview:keyWindow];
    
}


+(void) searchScrollview:(UIView *) superView{
    
    //获取该窗口下的所有scrollview
    for (UIView *uiView in superView.subviews) {
        
        if ([uiView isKindOfClass:[UIScrollView class]]) {
            
            UIScrollView *scroView=(UIScrollView *) uiView;
            
            //转换坐标系(将scrollview的坐标系转换到我们的当前窗口)
            UIWindow *win=[UIApplication sharedApplication].keyWindow;
            
            //将scroview从他的父控件的坐标转换到我们的窗口
            CGRect newFrame=[win convertRect:scroView.frame fromView:scroView.superview];
            
            //判断当前scrollview是否在我们的窗口内
            BOOL isInWindow=CGRectIntersectsRect(win.bounds, newFrame);
            
            //只改动当前窗口的
            BOOL isShowing=!scroView.hidden&&scroView.alpha>0.01&&isInWindow&&scroView.window==win;
            
            if (isShowing) {
               
                CGPoint p=scroView.contentOffset;

                p.y=0;
                
                [scroView setContentOffset:p animated:YES];
                
            }
        }
        
        [self searchScrollview:uiView];
    }
}


+(void)show{

    window_.hidden=NO;
}



@end
</pre><pre name="code" class="objc">
</pre><pre name="code" class="objc">


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值