在Interface Builder中呈现自定义UITextField子类的错误

Zie*_*ter 5 interface-builder ios swift

我在尝试获取UITextField在Interface Builder中正确呈现的子类时遇到问题IBDesignable.子类非常简单,它允许用户为a中的文本放置定义insets UITextField.代码如下:

import Foundation

@IBDesignable public class CLYInsetTextField: UITextField {

    @IBInspectable public var topInset: CGFloat = 0 {
        didSet {
            self.setNeedsDisplay()
        }
    }
    @IBInspectable public var leftInset: CGFloat = 0 {
        didSet {
            self.setNeedsDisplay()
        }
    }
    @IBInspectable public var bottomInset: CGFloat = 0 {
        didSet {
            self.setNeedsDisplay()
        }
    }
    @IBInspectable public var rightInset: CGFloat = 0 {
        didSet {
            self.setNeedsDisplay()
        }
    }

    override public func textRectForBounds(bounds: CGRect) -> CGRect {
        return UIEdgeInsetsInsetRect(bounds, UIEdgeInsetsMake(topInset, leftInset, bottomInset, rightInset))
    }

    override public func editingRectForBounds(bounds: CGRect) -> CGRect {
        return UIEdgeInsetsInsetRect(bounds, UIEdgeInsetsMake(topInset, leftInset, bottomInset, rightInset))
    }
}
Run Code Online (Sandbox Code Playgroud)

在故事板中使用此类时,属性在IB中显示完全正常,但是当我尝试更新其中一个值时,Xcode构建项目并吐出以下两个警告:

error: IB Designables: Failed to update auto layout status: dlopen([APP_NAME].app, 1): no suitable image found.  Did find:
[APP_NAME].app: can't map unslidable segment __TEXT to 0x100000000 with size 0x7EB000

error: IB Designables: Failed to render instance of CLYInsetTextField: dlopen([APP_NAME].app, 1): no suitable image found.  Did find:
[APP_NAME].app: can't map unslidable segment __TEXT to 0x100000000 with size 0x7EB000
Run Code Online (Sandbox Code Playgroud)

我可以在模拟器中构建和运行得很好,当我这样做时,视图会像我期望的那样呈现.只是当我尝试在IB中呈现它时,我正在反对这个问题.我在Interface Builder中看到的用于制作交互式自定义视图的其他示例似乎就像我的一样简单并且运行没有问题.是否有一个我缺少的步骤,或者我正在努力做什么根本不去工作?

小智 0

您需要将您的类初始值设定项包含在

#if !TARGET_INTERFACE_BUILDER ... #endif
Run Code Online (Sandbox Code Playgroud)

有关示例,请参阅http://digitalleaves.com/blog/2015/02/tutorial-building-your-own-custom-ibdesignable-view-a-uitextview-with-placeholder/