iPad中UIView的layoutSubviews方法不调用的

2019-06-18  本文已影响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];

}

上一篇下一篇

猜你喜欢

热点阅读