youngsoft/TangramKit

【BUG】非布局视图layoutSubviews相关

birdmichael opened this issue · 1 comments

BUG 报告

swift和OC同时存在。

环境 版本
Xcode Version 11.2.1 (11B53)
Swift 5.0
设备信息 IPhoneX
设备版本 13.2.2

重现步骤:

  1. 修改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()
    
  2. 旋转到横屏

  3. 再次旋转到竖屏

期望结果:
正常显示

实际结果:
页面有问题,发生偏移

修复建议:
布局视图加入到非布局父视图时,如果父视图的尺寸有改动,就有需要激发布局子视图的更新。

其他信息:
关于_tgEndLayoutAction回调,由于调用后就清空,且_tgRotationToDeviceOrientationAction在相同设备方向只会调用一次。但是实际测试中发现,layoutSubviews会多次调用,导致没有回调获取真实尺寸。建议添加Api可以在layoutSubviews出发就触发,已获得最终真实尺寸。

v1.4.2已验证