影响一个UIView是否能正常显示的几个因素
2012-02-28 17:05
239 查看
转载自:http://www.cnblogs.com/eagley/archive/2011/05/25/2056748.html
在使用代码实现UIView及其子类的对象的时候,经常会遇到创建的某个view没有显示在屏幕上。以下总结了本人遇到过的几种情况。可能还有些其它的原因也会导致view不能正常显示,限于个人经历有限,无法全部列出。待今后如果遇到新的情况,再对本文做更新。
1. 首先,最重要的肯定是这个view本身已经分配了内存空间,既已经执行过alloc。虽然这种错误看上去不会有人犯,但在程序结构比较复杂的情况下,有可能某个执行alloc的函数没有被调到,就会导致view本身没有创建,这样当然无法显示。
2. 第二点,就是要确认当前要显示的view是否已经添加到superview中了。由于在编写代码过程中,经常会在superview已经写好的情况下再添加某个新的view,但我就经常会在这时候忘记把新创建的view添加到superview中。而且这个问题不是很容易查找到,因为这个view本身已经创建了,superview也存在,通过debug也难以立即发现问题所在。因此现在如果再发生view无法正常显示的问题,我通常首先查这个问题。
3. 第三,view的hidden属性是否被设为YES。这类问题一般来说还是比较容易找到的。
4. 第四,view的宽度或高度是0;或者view的position不在屏幕范围内。这两个问题都是属于view的frame的问题。虽然一般在查bug的时候不太会第一时间想到这两种情况,但要检查view的frame是否正常还是很容易的。可以直接用断点查属性,也可以将他们的属性log出来。
5. 第五,被其它的view遮挡住。这个问题不是很经常碰到。因为ios的view的背景默认都是白的,所以只要被遮挡的view不是被完全盖住的话,还是能看到一个角落的。如果怀疑有这个情况,可以通过改变view的位置和大小,或者将前面的view隐藏掉,来判断view是不是被遮挡了。
6. 第六,view里面没有内容。这个问题也是需要注意的。因为ios的view默认背景都是白的,所以如果view里面没有内容的话,最终在屏幕上只能看到一片白色,与ios的底色没有区别。要检查这个问题也挺容易,方法和第四点一样。
目前本人遭遇到过的view无法显示的问题,都是由于以上所列原因的其中之一或多个因素共同作用。但是如果是在比较复杂的系统中,可能会有多个UIView嵌套的情况,这时候就需要耐心地一层层检查,保证每一层的view都正常显示。
转载到此,方便自已随时拿来参考!
在使用代码实现UIView及其子类的对象的时候,经常会遇到创建的某个view没有显示在屏幕上。以下总结了本人遇到过的几种情况。可能还有些其它的原因也会导致view不能正常显示,限于个人经历有限,无法全部列出。待今后如果遇到新的情况,再对本文做更新。
1. 首先,最重要的肯定是这个view本身已经分配了内存空间,既已经执行过alloc。虽然这种错误看上去不会有人犯,但在程序结构比较复杂的情况下,有可能某个执行alloc的函数没有被调到,就会导致view本身没有创建,这样当然无法显示。
2. 第二点,就是要确认当前要显示的view是否已经添加到superview中了。由于在编写代码过程中,经常会在superview已经写好的情况下再添加某个新的view,但我就经常会在这时候忘记把新创建的view添加到superview中。而且这个问题不是很容易查找到,因为这个view本身已经创建了,superview也存在,通过debug也难以立即发现问题所在。因此现在如果再发生view无法正常显示的问题,我通常首先查这个问题。
3. 第三,view的hidden属性是否被设为YES。这类问题一般来说还是比较容易找到的。
4. 第四,view的宽度或高度是0;或者view的position不在屏幕范围内。这两个问题都是属于view的frame的问题。虽然一般在查bug的时候不太会第一时间想到这两种情况,但要检查view的frame是否正常还是很容易的。可以直接用断点查属性,也可以将他们的属性log出来。
5. 第五,被其它的view遮挡住。这个问题不是很经常碰到。因为ios的view的背景默认都是白的,所以只要被遮挡的view不是被完全盖住的话,还是能看到一个角落的。如果怀疑有这个情况,可以通过改变view的位置和大小,或者将前面的view隐藏掉,来判断view是不是被遮挡了。
6. 第六,view里面没有内容。这个问题也是需要注意的。因为ios的view默认背景都是白的,所以如果view里面没有内容的话,最终在屏幕上只能看到一片白色,与ios的底色没有区别。要检查这个问题也挺容易,方法和第四点一样。
目前本人遭遇到过的view无法显示的问题,都是由于以上所列原因的其中之一或多个因素共同作用。但是如果是在比较复杂的系统中,可能会有多个UIView嵌套的情况,这时候就需要耐心地一层层检查,保证每一层的view都正常显示。
转载到此,方便自已随时拿来参考!
相关文章推荐
- 影响一个UIView是否能正常显示的几个因素
- 影响一个UIView是否能正常显示的几个因素
- 影响一个UIView是否能正常显示的几个因素
- 影响一个UIView是否能正常显示的几个因素
- 整个页面的ajax都执行完以后再进行其他的操作,怎么判断一个图片是否正常显示?
- 写一个彩票程序 30选7 随机(1~30中间)生成7个随机数,注意不能重复然后输入7个数,对比7个数是否与随机数有相同的,如果有显示“中了几个号” 如果中了7个号,显示一等奖 如果中了6个号,显示二
- ASP.NET网站中用到一个FlashUpload上传控件服务器上Flash就不能正常显示 axd映射问题
- 关于Webbrowser针对网银控件显示不正常的一个解决思路。
- jquery里面去判断一个DIV是否显示
- 影响ActiveMQ性能的几个重要因素
- js赋值改变后原来的东西也改变了,影响了好几个其它使用同一个源数据的原因以及解决方法
- 【指标测试】影响IOPS的几个重要因素
- 一次和别人争吵一个按钮,点击后显示导航;再点击不显示的效果,是否一定以及必须用js?
- shell之监控tomcat(一个tomcat)端口是否正常
- 判断一个值是否在一棵二叉树中。(注意多测几个值,看是否都能找到)
- qml一个程序里多个loops动画对另一个程序qml显示的刷新的影响
- 一个按钮读取U盘信息,在U盘中直接运行时,程序关闭,在其他盘中运行时却正常显示对话框
- jquery里面去判断一个DIV是否显示
- 影响 h00lyshit 成功的几个因素
- Unity中影响性能的几个因素