影响一个UIView是否能正常显示的几个因素

在使用代码实现UIView及其子类的对象的时候,经常会遇到创建的某个view没有显示在屏幕上。以下总结了本人遇到过的几种情况。可能还有些其它的原因也会导致view不能正常显示,限于个人经历有限,无法全部列出。待今后如果遇到新的情况,再对本文做更新。

首先,最重要的肯定是这个view本身已经分配了内存空间,既已经执行过alloc。虽然这种错误看上去不会有人犯,但在程序结构比较复杂的情况下,有可能某个执行alloc的函数没有被调到,就会导致view本身没有创建,这样当然无法显示。

第二点,就是要确认当前要显示的view是否已经添加到superview中了。由于在编写代码过程中,经常会在superview已经写好的情况下再添加某个新的view,但我就经常会在这时候忘记把新创建的view添加到superview中。而且这个问题不是很容易查找到,因为这个view本身已经创建了,superview也存在,通过debug也难以立即发现问题所在。因此现在如果再发生view无法正常显示的问题,我通常首先查这个问题。

第三,view的hidden属性是否被设为YES。这类问题一般来说还是比较容易找到的。

第四,view的宽度或高度是0;或者view的position不在屏幕范围内。这两个问题都是属于view的frame的问题。虽然一般在查bug的时候不太会第一时间想到这两种情况,但要检查view的frame是否正常还是很容易的。可以直接用断点查属性,也可以将他们的属性log出来。

第五,被其它的view遮挡住。这个问题不是很经常碰到。因为ios的view的背景默认都是白的,所以只要被遮挡的view不是被完全盖住的话,还是能看到一个角落的。如果怀疑有这个情况,可以通过改变view的位置和大小,或者将前面的view隐藏掉,来判断view是不是被遮挡了。

第六,view里面没有内容。这个问题也是需要注意的。因为ios的view默认背景都是白的,所以如果view里面没有内容的话,最终在屏幕上只能看到一片白色,与ios的底色没有区别。要检查这个问题也挺容易,方法和第四点一样。

目前本人遭遇到过的view无法显示的问题,都是由于以上所列原因的其中之一或多个因素共同作用。但是如果是在比较复杂的系统中,可能会有多个UIView嵌套的情况,这时候就需要耐心地一层层检查,保证每一层的view都正常显示。

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

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,294评论 4 61
  • 他说 我的日子 怎么象白开水 她问 你有心爱的人了吗 他说 还没有呀 她笑道 当你心里有个她 当你们相互爱上了 你...
    雪莉诗话阅读 243评论 6 15
  • 丁香花开了一朵 掉了 一缕阳光透进门窗 蒸发了 擦擦昨晚流的那滴泪 你笑了一一 苦过了 就好了 你背着墙哭泣 很伤...
    当代诗人云烟阅读 232评论 7 10
  • 路上,行人熙攘 视线里,分不清谁是谁 熟悉又陌生的身影 乍看,是你 再看,已不是你 如果存在 瞬间移动 我想 从我...
    筱伊_5029阅读 215评论 6 1
  • 夜里常常想起 那年夏天的离别 每一颗泪水都有要倾诉的必要 每一次欢笑都有被遗忘的可能 纷飞的各色的粉笔屑 是永远写...
    成诗阅读 296评论 0 2