我正在迅速开发本机ui组件,以添加到我的本机移动应用程序中。我有一个由从RCTManager继承的manager类创建的根视图。在该视图内部,我使用自动布局来确定子视图的大小和位置。但是,某些嵌套子视图实际上需要知道其父视图的帧大小(宽度和高度)。问题是,在根视图上调用init方法时,我需要这些值,但是通过使用自动布局,似乎无法获得这些值。使用React本机应用程序时,似乎通常在纯ios应用程序的视图控制器中的许多逻辑现在都在实际视图中。因此,在视图管理器或视图内无法访问诸如viewDidLayoutSubviews之类的方法。对于这个问题,我将不胜感激。提前致谢。
答案 0 :(得分:0)
如果正确理解您的问题,那么我解决此问题的方法就是利用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
}
}