Swift2中使用instantiateWithOwner加载nib文件速度慢

3

我尝试通过调用instantiateWithOwner从nib加载自定义的UI视图。

func loadViewFromNib() -> UIView {
    let bundle = NSBundle(forClass: self.dynamicType)
    let nib = UINib(nibName: "myCustomView", bundle: bundle)
     let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView
    return view
}

视图加载成功,但加载时间较长(5秒)。 当我跟踪代码时,发现延迟的原因在于此行:

let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView

我删除了所有自动布局约束,但仍然延迟调用。

你能解决这个问题吗?我使用类似的方法 UINib(nibName: Self.className, bundle: nil).instantiateWithOwner(nil, options: nil).first as? Self 也遇到了加载缓慢的问题。 - Afonso
1个回答

2

我有同样的问题,发现这是由于UILabel或其他视图需要字体导致的。将字体更改为“系统字体”可以解决问题。

如果您从nib中删除所有子视图,您会注意到加载时间非常快。然后逐个添加子视图以检查哪个视图会减慢时间。


谢谢!我之前选中了来自另一个项目的字体,但它们并不属于这个项目。将它们全部更改为“System”解决了问题。如果不是因为你的帖子,我想我不会想到这个解决方法。再次感谢 :-) - Elijah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接