UIWindow

更多信息参考 UIWindow
UIWindow是UIView的一个子类,UIView的所有属性和方法,UIWindow中都可以用。
更多属性参照UIView比如调整大小,添加删除子view,设置背景色,alpha,opaque(不透明)等等

window在app中始终有一个,除非你的app会同时运行在两个屏幕上。在同一时间只有一个window可以接受event,这个window被成为key window(注意:iOS会给alert窗口和输入窗口分配单独的window,所以当alert窗口出现的时候key window就会变成alert窗口)
window有两个作用,1)提供view的容器,2)将event分发给各子view。如果想显示不同的view,则只需要将要显示的viewcontroller赋给window的rootViewController属性即可。

1.iOS坐标系
iPhone的坐标系是以左上角为原点
每一个view的frame所使用的坐标系以它的父视图的左上角为原点
相关函数
CGPoint point = CGPointMake(x, y)
CGSize size = CGSizeMake(width, height) //代表一个宽和高的纬度
CGRect rect = CGRectMake(x, y, width, height)

2. windowLevel属性标示当前window在z轴的坐标,显然alert的window值大于Normal值,所以才能显示在上面。

3.screen属性标示当前window显示的设备画面,该属性是UIScreen的一个实例。通过该实例可以取得screen的大小,模式,亮度等。

4.var frame:CGRect (从父类UIVIew继承)
frame的概念是以父视图坐标原点作为原点,左上角的坐标为相对父视图左上角原点的位置。

swift中只有frame属性了,OC中还有bound和center,transform的概念,估计swift中以后不知道会不会加上。
bound本地坐标系,即本视图的坐标系,本视图中左上角为(0,0)

5.可以通过Window Notifications来监控window的变化,比如下面两个通知,可以监控窗口显示和隐藏。但是一般的app只有一个window,所以很少会用到。
UIWindowDidBecomeVisibleNotification
UIWindowDidBecomeHiddenNotification

6.当用storyboard创建画面时,系统会完成以下动作,所以用故事板的时候,在自己的代码中是不会对UIWindow操作的。
1)在app launch时,初始化window属性,
2)将storyboard中的初始化view controller赋给rootViewController属性。
3)当画面切换时给rootViewController赋予新的值。

      import UIKit
        
        @UIApplicationMain
        class AppDelegate: UIResponder, UIApplicationDelegate {
            
            var window: UIWindow?
            
            func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool
            {
                //UIWindow没有指定构造方法,继承了父类UIView的所有指定构造方法。
                //一般widnow会自动被在UIApplicationMain中被创建,而且rootviewcontroller会自动用ViewController创建,
		//如果要定制,在application:didFinishLanuchingWithOptions函数中定制。
                //另外,如果UIWindow中的frame如果不是占据全屏的话,则空白的地方是无法接收到event的。
                //创建全屏,frame可以用 UIWindow(frame: UIScreen.mainScreen().applicationFrame)
                self.window = UIWindow(frame: CGRectMake(10, 10, 200, 200))
                self.window?.backgroundColor = UIColor.greenColor()
                window?.makeKeyAndVisible() //让当前的window作为keywindow,并显示。
                
                //给Window加入一个子view,注意frame的意思是从父view的0,0坐标作为原点。
                var view = UIView(frame: CGRectMake(10, 10, 300, 300))
                view.backgroundColor = UIColor.blueColor()
                
                //将view加入到window中
                self.window?.addSubview(view)
                
                //注意,程序不一定需要view controller,本程序没有view controller,在输出窗口中会提示
                //Application windows are expected to have a root view controller at the end of application launch
                //当出现多画面切换的时候应该需要用到吧。
                return true
            }
        }


显示效果如下图:


《完》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值