React Native Swift UI 组件框架大小

Vic*_*nna 1 ios swift react-native

我正在快速开发本机 ui 组件,以添加到我的反应本机移动应用程序中。我有一个由继承自 RCTManager 的管理器类创建的根视图。在该视图中,我使用自动布局来确定子视图的大小和位置。然而,一些嵌套的子视图实际上需要知道它们的父视图\xe2\x80\x99s帧大小(宽度和高度)。问题是,当在根视图上调用 init 方法时,我需要这些值,但通过使用自动布局,似乎无法获取这些值。对于 React Native 应用程序来说,通常在纯 ios 应用程序的视图控制器中的许多逻辑现在都在实际视图中。因此,诸如 viewDidLayoutSubviews 之类的方法在视图管理器或视图中不可访问。我非常感谢有关此问题的任何指导或帮助。提前致谢。

\n

Dav*_*vid 6

如果正确理解你的问题,我解决这个问题的方法是利用UIView.layoutSubview. 在该方法中,您应该有权访问父级UIView的框架/边界,您可以使用它来计算附加子视图的框架。

class MyView : UIView {
    var label:UILabel?

    override init(frame: CGRect) {
        super.init(frame: frame)
        self.frame = CGRect(x: 0, y: 0, width: 200, height: 200)
        self.backgroundColor = UIColor.green
        label = UILabel()
        label?.text = "Hello World!"
        label?.backgroundColor = UIColor.red
        self.addSubview(label!)
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override func layoutSubviews() {
        label?.frame = self.bounds
    }
}
Run Code Online (Sandbox Code Playgroud)