(lldb) po delegateWindow
<UIWindow: 0x15fd24390; frame = (0 0; 320 568); gestureRecognizers = <NSArray: 0x1700567a0>; layer = <UIWindowLayer: 0x170233700>>
每一个IOS程序都有一个UIWindow,在我们通过模板简历工程的时候,xcode会自动帮我们生成一个window,然后让它变成keyWindow并显示出来。这一切都来的那么自然,以至于我们大部分时候都忽略了自己也是可以创建UIWindow对象。
通常在我们需要自定义UIAlertView的时候(IOS 5.0以前AlertView的背景样式等都不能换)我们可以使用UIWindow来实现
控件的层级关系和你加入到父视图的顺序有关,也就是先addsubview至父视图的,层级越低,会被后加入的遮盖。 可以通过以下函数改变子视图的层级 将一个UIView显示在最前面:
- (void)bringSubviewToFront:(UIView *)view;
将视图显示在下面:- (void)sendSubviewToBack...例如下面的代码示例:
UIView *v...
控件的层级关系和你加入到父视图的顺序有关,也就是先addsubview至父视图的,层级越低,会被后加入的遮盖。
可以通过以下函数改变子视图的层级:1.Objective-C版本:
将UIView显示在最前面:
- (void)bringSubviewToFront:(UIView *)view;将UIView显示在下面:
- (void)sendSubviewToBack:(UIView
一、UIWindow是一种特殊的UIView,通常在一个程序中只会有一个UIWindow,但可以手动创建多个UIWindow,同时加到程序里面。UIWindow在程序中主要起到三个作用:
1、作为容器,包含app所要显示的所有视图
发现11以后,总是获取不到Window层级了。原来是这个样子。 if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 11) {
view = [[UIApplication sharedApplication].windows firstObject];
} else {
vi...
在项目中,视频播放时候遇到网络切换需要弹出AlertView提醒用户,忽然发现转屏的时候播放View加到KeyWindow的时候把AleryView挡住了。如图
因为转屏的时候视图是直接加载到
[UIApplication sharedApplication].keyWindow
所以应该是keyWindo切换导致的,因为AlertView弹出时候,keyWi...
在创建IOS项目时,若有一个比较明确的层级架构,将对于今后代码的维护或者功能的扩展很有帮助;本文将通过一个实例来展现我对于层级的一些观点;里面有一些零碎的知识点可能无法全部介绍,到时提供源代码进行下载,也希望有其它更好的观点可以提出来;
一:首先了解整个项目的情况
注意:项目中结合Pod进行一些第三方插件的管理,项目中已经把几个比较常用的第三方进行引用;因为上面几个都是比较常见的第三方插件...
在iOS中框架是一个目录,包含了共享资源库,用于访问该资源库中储存的代码的头文件,以及图像、声音文件等其他资源。共享资源库定义应用程序可以调用的函数和方法。
iOS为应用程序开发提供了许多可使用的框架,并构成IOS操作系统的层次架构,分为四层,从上到下依次为:Cocoa
Touch Layer(触摸UI层)、MediaLayer(媒体层)、Core
...
页面层级概念比较好理解,就是上边的层盖住下边的层,这样一层一层的堆叠起来。
在 uiview 内部通过 addsubviews 来增加一层页面。
但是涉及到 uiviewcontroller 操作的时候是啥样的呢。
实验基于swift 5.0
譬如现在有一个页面层级关系如下:
windowA
|- viewControllerA
|- subviewA
|- viewC
pushViewController / popViewController
1. 通过UIApplication获取
UIWindow *window = [UIApplication sharedApplication].keyWindow;
UIWindow *window = [[UIApplication sharedApplication].windows lastObject];
复制代码2. 比较严谨的获取方法:
- (UIWindow *)lastW...
一、基本特性
1、UIWindow是一种UIView,但是它是所有用户界面的最顶层背景View,不同于普通的View,它具有事件(Event)的分发能力,是响应链的开始的起点。所以,当我们的应用启动时,我们须要手动提供一个main window给我们的应用。当然,如果你的项目是基于Storyboards的,Storyboards在创建时默认会提供window;
2、window的显示需要通过提...