美文网首页
iPad中UIView的layoutSubviews方法不调用的

iPad中UIView的layoutSubviews方法不调用的

作者: 田心今心九日 | 来源:发表于2019-06-18 17:14 被阅读0次

    在iOS系统中,以下情况会调用UIView的layoutSubviews方法:

        1.直接调用[self setNeedsLayout]。

        2.addSubview的时候。

        3.当view的size发生改变的时候。

        4.滑动UIScrollView的时候。

        5.旋转Screen会触发父UIView上的layoutSubviews事件。

    但是layoutSubviews方法在iPhone中能被正常调用,在iPad中不会被调用。

    解决此问题的方法:

    1.使用通知监听状态栏的变化,然后再调用更新layout布局的方法(updateFrame)。

    - (void)registerOrientationObserver {

            [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateFrame) name:UIApplicationDidChangeStatusBarOrientationNotification object:nil];

    }

    2.在控制器或者父级类中(如果父类的layoutSubviews不被调用,则顺着继承链往上走)调用setNeedLayout方法,则CustomView中的layoutSubviews就会触发。

    - (void)viewWillLayoutSubviews {

            [super viewWillLayoutSubviews];   

            [self.customView setNeedsLayout];

    }

    相关文章

      网友评论

          本文标题:iPad中UIView的layoutSubviews方法不调用的

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