如何在Swift中将类分配给自定义UIView?

时间:2014-08-01 00:02:46

标签: storyboard swift interface-builder

我正在尝试创建自定义框架,以便我可以使用@IBDesignable在故事板中呈现我的视图。通常,您可以单击故事板中的视图,然后从检查器的下拉列表中选择一个类。因为我必须从下拉列表中分配我的自定义框架,所以我现在必须在我的框架中创建一个自定义子视图并分配我的类((这是我从cocoapods JWGCircleCounter下载的图形圈计数器中的一个类).I& #39;我不知道如何在Swift的XCode 6中的S中执行此操作。以下是我的自定义框架的代码:

import UIKit
@IBDesignable
class CircleTimer: UIView {
    override func layoutSubviews() {
        super.layoutSubviews()
        var outerCircle = UIView.class(JWGCircleCounter)(frame CGRectmake: 22, 137, 125, 125)        //This is my guess at how to assign the class, thought of course it doesn't work. I'm also not sure where to delcare the frame after assigning the class
    self.addSubview(outerCircle)
}

1 个答案:

答案 0 :(得分:1)

您应该将JWGCircleCounter的实例设为JWGCircleCounterUIView的子类。 由于JWGCircleCounter具有初始值init(frame:CGRect),因此您可以将其称为实例。

同样在swift

class CircleTimer: UIView {
override func layoutSubviews() {
    super.layoutSubviews()
    var outerCircle:JWGCircleCounter = JWGCircleCounter(frame: CGRectMake(22, 137, 125, 125))       //This is my guess at how to assign the class, thought of course it doesn't work. I'm also not sure where to delcare the frame after assigning the class
    self.addSubview(outerCircle)
}

JWGCircleCounterUIView的子类,它已经覆盖init(frame:),因此您可以调用它来创建实例。

请注意,您应始终将子类(JWGCircleCounter)的实例传递给超类(UIView),而不是反之亦然。参考Polymorphism

编辑:对于可可豆荚,您可以尝试

选择您的项目文件(右上角的蓝色)并进入Build Settings。然后,为项目文件(蓝色)和自定义框架目标

找到'Allow non-modular includes in Framework Modules'并将其设置为