xcode - 将 xib 文件附加到自定义 UIView 类时出错
Posted
技术标签:
【中文标题】xcode - 将 xib 文件附加到自定义 UIView 类时出错【英文标题】:xcode - Error when attaching xib file to custom UIView class 【发布时间】:2015-07-28 09:08:13 【问题描述】:我有一个UIView
类,我在其中以编程方式创建一些按钮和标签,并且我在附加到该类的某个ViewController
中有一个视图。该类按预期工作得非常好,但是每当我尝试将此自定义 UIView
类链接到 xib 视图时,我都会收到以下错误:
-"Main.storyboard: error: IB Designables: Failed to update auto layout status: Interface Builder Cocoa Touch Tool crashed"
-"Rendering the view took longer than 200 ms. Your drawing code may suffer from slow performance.
"
-"error: IB Designables: Failed to render instance of MyView: Rendering the view took longer than 200 ms. Your drawing code may suffer from slow performance.
"
这是UIView
类中的初始化代码:
@IBDesignable class MyView: UIView
override init(frame: CGRect)
super.init(frame: frame)
setup()
required init(coder aDecoder: NSCoder)
super.init(coder: aDecoder)
setup()
func loadFromNib() -> UIView
let bundle = NSBundle(forClass: self.dynamicType)
let nib = UINib(nibName: "MyView", bundle: bundle)
let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView
return view
func setup()
var view = loadFromNib()
view.frame = bounds
view.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight
addSubview(view)
类和xib文件同名,
更新:我发现:
required init(coder aDecoder: NSCoder)
super.init(coder: aDecoder)
setup()
是所有错误的负责人,但如果我删除了它的内容并运行应用程序,视图不会按预期显示,我也尝试了awakeFromNib()
并发生了同样的问题。
【问题讨论】:
【参考方案1】:不太清楚是什么导致了您的具体错误,但是当我在将 xib 文件中的 UIView 连接到自定义 UIView 类时遇到问题时,这对我有帮助:
1) 删除您的 DerivedData 子文件夹的内容:
(当您再次构建项目时,将重新创建 DerivedData 的内容。)
可以通过访问 XCode 首选项中的“位置”选项卡找到您的文件夹。 只需删除其中的文件夹并重新构建/再次运行您的项目。
2) 清理你的项目
Product -> Clean(或者直接使用 [command + shift + K] 命令。
3) 重新启动 xcode 并重新构建/运行您的代码。
希望这会有所帮助!
【讨论】:
以上是关于xcode - 将 xib 文件附加到自定义 UIView 类时出错的主要内容,如果未能解决你的问题,请参考以下文章
使用 xib 将 tapGestureRecognizer 添加到自定义 UIView
使用Swift在Xcode 9中不显示IBDesignable UI