【BUG】非布局视图layoutSubviews相关
birdmichael opened this issue · 1 comments
birdmichael commented
BUG 报告
swift和OC同时存在。
环境 | 版本 |
---|---|
Xcode | Version 11.2.1 (11B53) |
Swift | 5.0 |
设备信息 | IPhoneX |
设备版本 | 13.2.2 |
重现步骤:
-
修改Demo为
TabbarController
嵌套UINavigationController
代码如下:
self.window = UIWindow(frame: UIScreen.main.bounds) self.window!.backgroundColor = .white let nav = UINavigationController(rootViewController:ViewController(style:.plain)) let nav2 = UINavigationController(rootViewController:ViewController(style:.plain)) let tabbar = UITabBarController() tabbar.viewControllers = [nav, nav2] self.window!.rootViewController = tabbar self.window!.makeKeyAndVisible()
-
旋转到横屏
-
再次旋转到竖屏
期望结果:
正常显示
实际结果:
页面有问题,发生偏移
修复建议:
布局视图加入到非布局父视图时,如果父视图的尺寸有改动,就有需要激发布局子视图的更新。
其他信息:
关于_tgEndLayoutAction
回调,由于调用后就清空,且_tgRotationToDeviceOrientationAction
在相同设备方向只会调用一次。但是实际测试中发现,layoutSubviews
会多次调用,导致没有回调获取真实尺寸。建议添加Api可以在layoutSubviews
出发就触发,已获得最终真实尺寸。
birdmichael commented
v1.4.2已验证