iOS开发中UIWindow

原创 2016年05月30日 11:23:21
- (instancetype)initWithFrame:(CGRect)frame 
{
    self = [super initWithFrame:frame];
    if (self) {

        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];//在这里注册通知

    }
    return self;
} 
- (void)dealloc {
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

/软键盘弹出时,页面做调整
- (void)keyboardWillChangeFrame:(NSNotification *)notification {

    //    if (self.picking) return;
    /**
     notification.userInfo = @{
     // 键盘弹出\隐藏后的frame
     UIKeyboardFrameEndUserInfoKey = NSRect: {{0, 352}, {320, 216}},
     // 键盘弹出\隐藏所耗费的时间
     UIKeyboardAnimationDurationUserInfoKey = 0.25,
     // 键盘弹出\隐藏动画的执行节奏(先快后慢,匀速)
     UIKeyboardAnimationCurveUserInfoKey = 7
     }
     */

    NSDictionary *userInfo = notification.userInfo;

    // 动画的持续时间
    double duration = [userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];

    // 键盘的frame
    CGRect keyboardF = [userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];

    //获取view在屏幕上的绝对位置
    UIWindow *window = [[UIApplication sharedApplication].windows lastObject];
    CGRect cashTextFieldFrame = [self.cashTextField convertRect:self.cashTextField.frame fromView:window];

    // 执行动画
    [UIView animateWithDuration:duration animations:^{

        // -jifenbaoTextFieldFrame, 前面添加了负号, 因为经过转化的坐标左上角是 (0,0), 右下角为(width,-height), 需要转化
        if (keyboardF.origin.y < -cashTextFieldFrame.origin.y + 150) {
            [self setContentOffset:CGPointMake(0.0, -cashTextFieldFrame.origin.y + 150 - keyboardF.origin.y)];

        } else {
            [self setContentOffset:CGPointMake(0.0, 0.0)];
        }
    }];
}

【iOS】UIWindow中文详解

1.window     每个iOS应用都会有至少一个window,这个window就是UIWindow的实例,有些应用会有多个window。window会有如下几个职责: 它包含了应用中的可见内容...
  • gang544043963
  • gang544043963
  • 2016年09月18日 19:38
  • 673

IOS: 状态栏提示控件的实现原理UIWindowLevel详解关于UIWindow的一点儿思考

现在很多流行的软件都加入了状态栏提示的功能,比如手机qq,微信等,今天我们就一起来看看状态栏提示控件的原理与实现。   一、状态栏提示的实现原理     不知道大家看到状态栏提...
  • zrhloveswallow
  • zrhloveswallow
  • 2014年05月12日 11:17
  • 905

UIWindow使用介绍

我们在平时的开发过程中,也许忽略了UIWindow。因为系统已经帮我们处理了它的相关操作。比如在程序启动过程中。调用makeKeyAndVisible方法,使整个程序界面可见。 - (BOOL)ap...
  • sinat_27706697
  • sinat_27706697
  • 2015年05月17日 08:05
  • 2208

UIWindow 详解及使用场景

首先来看一下UIWindow 继承关系 方法和属性 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIWindow : UIView //win...
  • u011363981
  • u011363981
  • 2017年05月05日 12:44
  • 199

UIWindow、UIView以及CALayer之间的关系

UIWindow、UIView以及CALayer之间的关系
  • aaaa99996666
  • aaaa99996666
  • 2016年05月11日 20:46
  • 527

横屏下UIWindow添加多个view自动旋转的解决方案

1、不要直接在UIWindow里面直接使用UIView,而是加载根试图控制器(UIViewController)然后使用控制器改变UIView,这也是Apple官方推荐的方式...
  • leikezhu1981
  • leikezhu1981
  • 2014年07月23日 23:19
  • 5622

添加多个UIWindow时,使用keyWindow要注意一点

最近的项目里有个关于创建多个uiwindow时使用keywindow出现的bug。 有个任务是在打开信息展示时,要求不被任何东西遮挡。这里设计方案是添加一个新的HXUIWindow继承与UIWind...
  • HX_lei
  • HX_lei
  • 2017年04月06日 09:16
  • 3537

iOS SDK详解之UIWindow(让视图在最上层)

版权声明:本文为博主原创文章,如需转载请注明出处 目录(?)[+] 这个iOS SDK详解的专栏地址  http://blog.csdn.net/colu...
  • binglan520
  • binglan520
  • 2017年11月29日 17:51
  • 66

IOS学习记录 基础类UIWindow,UIView,UISreen篇

IOS开发之UIScreen和UIWindow,UIView UIScreen(屏幕),UIWindow(窗口),UIView(视图)是IOS的几个基本界面元素。其中UIWindow(窗口)和U...
  • zhbitxhd
  • zhbitxhd
  • 2014年03月27日 15:22
  • 10697

关于UIWindow,使用小记

UIWindow是可以自建很多的。默认初始只有一个window。 UIStatusbar 、 UIAlertView 、UIActionSheet 还有键盘,都属于UIWindow类。 通过  [U...
  • icash
  • icash
  • 2013年11月29日 15:56
  • 15505
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS开发中UIWindow
举报原因:
原因补充:

(最多只允许输入30个字)