从NSCoder获取所需的init属性(编码器aDecoder:NSCoder)

nbu*_*urk 1 objective-c drawrect nscoder ios swift

我正在Swift中实现一个Circle类(子类UIView),radius它根据传入的帧在其初始化器中设置它,init(frame: CGRect)如下所示:

override init(frame: CGRect)
{
    radius = frame.width/2.0
    super.init(frame: frame)
}
Run Code Online (Sandbox Code Playgroud)

我还想确保从Interface Builder实例化圆圈的情况,所以我还实现了'必需的init(编码器aDecoder:NSCoder)`(我无论如何都被Xcode强制做了).

如何检索frame以某种方式包含在其中的视图的属性aDecoder.我想要实现的基本上是这样的:

required init(coder aDecoder: NSCoder)
{
   var theFrame = aDecoder.someHowRetrieveTheFramePropertyOfTheView // how can I achieve this?
   radius = theFrame.width/2.0
   super.init(coder: aDecoder)
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*n R 6

您可以在框架设置计算半径super.init():

required init(coder aDecoder: NSCoder)
{
    radius = 0 // Must be initialized before calling super.init()
    super.init(coder: aDecoder)
    radius = frame.width/2.0
}
Run Code Online (Sandbox Code Playgroud)