我有一個XCode 7.1界面生成器很奇怪的問題。我有一個非常簡單的UIView子類,這使得在故事板編輯罰款:UIView初始化覆蓋導致IBDesignable崩潰
import UIKit
@IBDesignable
class DashboardHeaderView: UIView {
@IBInspectable
var maskClipHeight: CGFloat = 40.0
override func layoutSubviews() {
super.layoutSubviews()
self.setMask()
}
private func setMask() {
let mask = CAShapeLayer()
mask.path = self.createMaskPath()
self.layer.mask = mask
}
private func createMaskPath() -> CGPath {
let maskPath = UIBezierPath()
maskPath.moveToPoint(CGPoint(x: bounds.minX, y: bounds.minY))
maskPath.addLineToPoint(CGPoint(x: bounds.maxX, y: bounds.minY))
maskPath.addLineToPoint(CGPoint(x: bounds.maxX, y: bounds.maxY - self.maskClipHeight))
maskPath.addLineToPoint(CGPoint(x: bounds.minX, y: bounds.maxY))
maskPath.closePath()
return maskPath.CGPath
}
}
但是,如果我只添加初始化覆蓋到它:
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
它失敗,錯誤:
- 錯誤:IB Designables:無法更新自動佈局狀態:代理程序崩潰
- er ror:IB Designables:無法呈現DashboardHeaderView的實例:代理程序崩潰
我100%確定初始化器重寫使它崩潰,因爲我已經重現了它幾次。如果我只評論它,它會再次運作。
任何人都有任何想法,爲什麼發生這種情況,如果有辦法修復/解決方法呢?
您是否嘗試過使用'init()'而不使用參數? – Losiowaty
@Losiowaty UIView根本沒有定義'init()',據我所知。而且,如果我理解的很好,界面構建器會使用init和編碼器來初始化View。 –