この最適化の問題があります。写真とラベルで構成される nib のビューがあります。ペン先からロードする方法は次のとおりです。
@IBOutlet weak var imageView: UIImageView!
var view: UIView!
let nibName = "customView"
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
public required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setup()
}
func setup() {
view = loadFromNib()
view.frame = self.bounds
imageView.image = CustomView.defaultImage
addSubview(view)
setupProfileView()
}
func loadFromNib() -> UIView {
let bundle = NSBundle(forClass: self.dynamicType)
let nib = UINib(nibName: nibName, bundle: bundle)
let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView
return view
}
ロードするたびにかなりの時間がかかります。私の UI はこれらの customViews にかなり重きを置いています。約 50 個の customViews を作成して、mainThread をブロックせずに配置できる必要があります。フレーム付きのinitを使用してそれらを作成するには170ミリ秒かかり、VCにサブビューとして配置するにはさらに350ミリ秒かかります。この場合、メインスレッドの負荷を軽減する方法はありますか? たぶん、プログラムによるアプローチはペン先よりも優れているでしょうか?