美文网首页iOSiOS DeveloperIOS
关于autoresizingMask的莫名错误 &&am

关于autoresizingMask的莫名错误 &&am

作者: 马戏团小丑 | 来源:发表于2016-05-23 22:29 被阅读179次

    本文说一个莫名其妙的错误,控制台输出如下:


    由图片红色划线看出:子控件的高度=父控件的高度-某个数字,而项目中子控件TopicVoiceView是由xib显示的,但是代码里面又没有设置他关于父控件高度的某些关系,所以根据经验可猜测跟autoresizingMask(尺寸自动调整)有关系
    解决办法如下:
    可在TopicVoiceView写上如下代码取消autoresizingMask



    viewDidLoad和viewDidLayoutSubviews

    1.如果控制器的view是通过xib创建的,那么在viewDidLoad方法中,控制器view的大小就是xib中设置的大小
    2.为了避免【在viewDidLoad方法中拿到不准确的控制器view大小】,可以这么解决
    1> 在viewDidLoad方法中初始化添加子控件,在viewDidLayoutSubviews方法中设置子控件的frame
    2>直接viewDidLoad方法中为所添加的view设置属性

    autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
    

    所以不要在viewDidLoad中,因为在该方法中不会执行约束,在viewDidLoad中控件的尺寸都不是最终尺寸
    在 viewDidLayoutSubviews,该方法表示执行约束完成,是专门用来布局子控件(当控制器的view尺寸发生改变的时候会调用)
    LayoutSubviews 是当view里面的子控件尺寸发生改变的时候会调用

    相关文章

      网友评论

        本文标题:关于autoresizingMask的莫名错误 &&am

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