概述
iOS开发中,真机测试时,如果此时也不能与电脑连接,就无法实时看到打印的log,因此如果能够将在Xcode中打印的log打印到app上,并且不会影响app的使用就完美了。因此写了一个小工具,可以将log打印到app上。
原理
主要是新建一个UIWindow
单例,将windLevel
设为UIWindowLevelAlert
,使其保持在屏幕最前方。将userInteractionEnabled
设为NO
,不响应触摸点击事件。
使用时,只需在appDelegate中[[NJYLogOutPutWindow shareInstance] setHidden:NO];
,Swift中NJYLogDisplayWindow.shareInstance.isHidden = false
即可。
问题分析
- 为何不在
[[UIApplication sharedApplication].delegate.window addSubview:view];
,而是要新建一个UIWindow
对象
直接在UIApplication.keyWindow
中直接添加view,如果UIApplication.keyWindow
又添加了其它的view,就会将该日志view挡住。 - 为何代码中设置
window.hidden = NO;
就可将window
显示在屏幕上
和UIView
不同,UIWindow
一旦被创建,它就自动添加到整个见面上了
备注
代码已上传到GitHub/NJYLogOutput上,Objc和swift分别对应相应的代码。