美文网首页iOS bug修复iOS移动开发社区程序员
控件不显示可能是哪些原因?

控件不显示可能是哪些原因?

作者: DXSmile | 来源:发表于2016-02-15 17:17 被阅读264次

    控件不显示可能是哪些原因?

    是日常开发中,特别是对于初学者而言,我们编写代码,一步一步的验证的时候,时常会出现控件无法显示的情况, 这里我总结了几种可能出现控件不显示的情况和原因, 希望能对iOS初学者能提供一些解决问题的思路和有更多的帮助:

    *某个控件显示不出来可能导致的原因:

    1. frame属性,是否为0,或者设置的位置不对

    在开发中,特别是在自定义某些控件的属性的时候, 对于控件的frame如果没有设置,或者设置错误了,控件肯定是不会显示正常的,所以当你遇到控件显示不正常的时候,第一个需要思考的就是控件本身的frame属性是否正常;

    2. hidden =YES

    多数情况下,我们需要对控件的hidden属性,也就是是否隐藏,作一些自定义, 所以,如果你检查了frame属性,确定是对的,但是控件还是不能显示,那么你可以来考虑一下是不是在某个时刻我们对这个控件的hidden属性做了设置;

    3.是否添加到了父控件中

    还有一种情况,那就是,当我们需要把某个控件添加到一个父容器(父控件)中才会显示的时候,如果,我们忘记了添加的步骤,也是不会显示控件的,所以,这个时候,你不妨来检查一下这个方面;

    4. Alpha <= 0.01

    通过苹果的官方文档,我们知道,当一个控件的透明度大于>0.01的时候,是可以监听事件的,否则(<=0.01),是无法监听事件的, 所以,如果Alpha<= 0.01.系统就认为这个控件不存在,此时不能监听事件,当然,也就在运行的是无法查看到控件了,

    5.被其他控件挡住了。 

     控件与控件之间都是有先后层叠次序的, 如果我们需要显示的控件被其他控件给挡住了,那肯定是看不到控件的显示的,也就是我们常说的:后添加的控件默认是添加在最上层的;

    这个时候,我们可以去检查一下控件的层叠次序,如果,你已经可以固定某一个控件在最上面,你可以调用一个方法,把它始终置于最上层: 如:

    [self.view bringSubviewToFront:redView];

    通过bringSubviewToFront:这个方法,你就可以始终把某一个控件置于最上层, 当然,有最上层也就有最下层,如下:

    //把中间图片按钮放置在所有图层的最上面

    [self.viewbringSubviewToFront:self.minidleIamgeViewButton];

    //把背景图片始终置于最下面一层

    [self.viewsendSubviewToBack:self.downImageView];

    6.检查父控件的上面这5种情况。

    如果,上面5中情况,你都检查了,还是没有找出原因,那么可能出现问题的是你的父控件了,所以,你可以在逐步的检查父控件的这几种情况;

    上面的小总结,是我日常开发中的一些思考,希望能给大家带来帮助,

    详情可查看我的GitHub项目: 

    https://github.com/DXSmile/Control-view-does-not-show-what-might-be-the-reason-/tree/master

    相关文章

      网友评论

        本文标题:控件不显示可能是哪些原因?

        本文链接:https://www.haomeiwen.com/subject/ujspkttx.html