swift - Storyboard中的 UILabel 子类外观

标签 swift uikit interface-builder xcode-storyboard

我创建了一个名为 MyUILabel 的 UILabel 子类。唯一改变的是字体和字体大小。当我运行该应用程序时,它按预期显示。但是,在 Storyboard 中,会显示默认的 UILabel。有什么方法可以让 Storyboards 显示我的子类的字体和字体大小?

我的用户界面标签:

public class MyUILabel : UILabel {
    required public init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.font = UIFont(name: Constants.DefaultFont, size: 30)
    }
}

最佳答案

你可以让它成为@IBDesignable,然后实现prepareForInterfaceBuilder:

@IBDesignable
public class MyUILabel: UILabel {

    public override func awakeFromNib() {
        super.awakeFromNib()
        configureLabel()
    }

    public override func prepareForInterfaceBuilder() {
        super.prepareForInterfaceBuilder()
        configureLabel()
    }

    func configureLabel() {
        font = UIFont(name: Constants.DefaultFont, size: 40)
    }

}

请注意,IB 在我实现 init(coder:) 时不喜欢它,所以我将它移到了 awakeFromNib 中。

另请注意,当您创建一个@IBDesignable 类时,Apple 建议您创建一个单独的目标(例如"file"-“新建”-“目标...”-“Cocoa Touch Framework ") 对于这个可设计的类。有关详细信息,请参阅 WWDC 2014 视频 What’s New in Interface Builder .

关于swift - Storyboard中的 UILabel 子类外观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34593734/

相关文章:

javascript - Swift——进入 WKURLSchemeHandler 的值第一次是正确的,然后永远不会改变

ios - 何时使用未包装的可选值作为类型定义的一部分

ios - 更新具有主键的 Realm 对象

json - 在 swift 中使用字典和 utf-8 发出发布请求

ios - 确定 UILocalNotification 是否是从调度或用户交互中触发的

ios - 何时/什么/为什么/如何在应用程序中使用 launchOptions 的 UIApplicationOptionsURLKey 值(应用程序 :willFinishLaunchingWithOptions:)?

ios - UISearchBar 在添加到 iOS 7.1 上的 UITableViewCell 时更改其 super View

iphone - Storyboard 应用程序也可以在 iOS 5 之前的设备上运行吗?

objective-c - 在 Storyboard上设置 reuseIdentifier 会导致自定义 UITableViewCell 不显示

ios - 在 UIToolBar 上居中一个按钮