UIView 在没有 UIViewController 的情况下获取宽度/高度



>我有这个:

class SheetView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
RCTLogInfo("SHEET VIEW INIT'ED")
let width = String(format:"%.3f", Double(self.frame.size.width));
let height = String(format:"%.3f", Double(self.frame.size.height));
RCTLogInfo("Width: " + width + ", Height: " + height);
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

但是,宽度和高度始终为 0。在这里阅读 在运行时访问 UIView 宽度似乎我需要viewDidLayoutSubviewsUIView似乎没有这个。我必须使用UIViewController才能使用viewDidLayoutSubviews,但是我无法从UIView更改,因为使用此组件的位置需要UIView

class SheetViewManager : RCTViewManager {
override func view() -> UIView! {
return SheetView();
}
}

有没有办法在UIView中获得高度/宽度?

是的,你肯定可以。试试这个.(迅捷 3.0(

override func layoutSubviews() {
super.layoutSubviews()
print(self.frame)
}

确保您知道,如果自定义视图的超级视图未通过框架设置或通过情节提要自动布局或以编程方式为自定义视图提供框架,则框架将保持 0 宽度和 0 高度

最新更新