添加自定义UILabel类后,如何在Storyboard中查看修改效果?
你已经给UILabel写了带@IBDesignable的自定义类,但在Storyboard里看不到文本变蓝的效果?别慌,我给你梳理几个必试的解决步骤:
先确认代码的基础问题
你的CustomLabel代码我帮你补全了关键的import UIKit——这部分你之前漏写了,这很可能是问题根源之一:
import UIKit @IBDesignable class CustomLabel: UILabel { required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder)! self.setup() } override init(frame: CGRect) { super.init(frame: frame) self.setup() } override func prepareForInterfaceBuilder() { super.prepareForInterfaceBuilder() setup() } private func setup() { self.textColor = UIColor.blue } }
接下来按顺序操作:
开启IB自动刷新功能
打开Xcode偏好设置(快捷键Command + ,),进入「General」标签,找到「Interface Builder」板块,确保Automatically Refresh Views选项是勾选状态。如果之前没开,勾选后重启Xcode。手动刷新Storyboard视图
切换到Storyboard界面,顶部菜单栏选「Editor」→「Refresh All Views」,或者用快捷键Option + Command + R强制刷新。有时候IB会“偷懒”,手动触发就能让自定义控件渲染出来。确保项目能正常编译
IBDesignable控件必须在代码无编译错误的前提下才能显示效果。先按Command + B编译项目,如果有红色报错,先把错误修复(比如刚才的import UIKit就是必须的)。确认Label已关联自定义类
选中Storyboard里的目标Label,打开右侧「Identity Inspector」(第三个图标,像身份证那个),在「Class」下拉框里选中CustomLabel,别选错成默认的UILabel,选完按回车确认。清理Xcode缓存重试
如果上面都没用,试试清理缓存:关闭Xcode,打开终端输入rm -rf ~/Library/Caches/com.apple.dt.Xcode,回车执行后重新打开Xcode,编译项目再看Storyboard。
做完这些步骤,你的CustomLabel应该就能在Interface Builder里显示蓝色文本了!
内容的提问来源于stack exchange,提问作者Rashid KC

