iOS app屏幕上打印日志

概述

iOS开发中,真机测试时,如果此时也不能与电脑连接,就无法实时看到打印的log,因此如果能够将在Xcode中打印的log打印到app上,并且不会影响app的使用就完美了。因此写了一个小工具,可以将log打印到app上。

原理

主要是新建一个UIWindow单例,将windLevel设为UIWindowLevelAlert,使其保持在屏幕最前方。将userInteractionEnabled设为NO,不响应触摸点击事件。
使用时,只需在appDelegate中[[NJYLogOutPutWindow shareInstance] setHidden:NO];,Swift中NJYLogDisplayWindow.shareInstance.isHidden = false即可。

问题分析

  1. 为何不在[[UIApplication sharedApplication].delegate.window addSubview:view];,而是要新建一个UIWindow对象
    直接在UIApplication.keyWindow中直接添加view,如果UIApplication.keyWindow又添加了其它的view,就会将该日志view挡住。
  2. 为何代码中设置window.hidden = NO;就可将window显示在屏幕上
    UIView不同,UIWindow一旦被创建,它就自动添加到整个见面上了

备注

代码已上传到GitHub/NJYLogOutput上,Objc和swift分别对应相应的代码。

参考

  1. iOS开发进阶
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容