是否可以在init(编码器:)中访问UIView的属性(例如框架)?

时间:2016-10-10 23:42:23

标签: ios swift uiview nscoder

我正在尝试了解如何在子类化NSCoder时正确使用UIView

required init?(coder aDecoder: NSCoder) {
  super.init(coder: aDecoder)
}

我想知道是否可以访问aDecoder可能带来的任何属性。我会...期望它知道视图在Storyboard中frame的大小。是否可以访问此信息?我尝试了以下操作,但它只返回CGRect的0值:

required init?(coder aDecoder: NSCoder) {
  let frame = aDecoder.decodeCGRect(forKey: "frame")
  print(frame) // prints: (0.0, 0.0, 0.0, 0.0)
  super.init(coder: aDecoder)
}

我查看了UIView的{​​{3}},但没有相关信息。

1 个答案:

答案 0 :(得分:-1)

如果您需要自定义视图的实际尺寸,那么您应该查看视图的视图控制器方法:

-(void) viewDidLayoutSubviews

调用此自定义视图时,应设置适当的尺寸。