XCodeでカスタムコントローラを設計していますが、コントローラの状態によっては、myImage?.draw(in: rect)
を上書きしたdraw(_ rect: CGRect)
関数内で呼び出してイメージを表示します。IBDesignableクラス描画UIImageがストーリーボードに表示されない
画像はアプリに正しく表示されますが、ストーリーボードには表示されません。はこれを説明するために、私はアプリやストーリーボードの両方で表示される同じ描画関数内でベジェリング、コメントを追加しました:
Controller as displayed in app
Controller as displayed in storyboard
は、問題を調査したが、私はそれがあってよいと考えています画像はオプションであるという事実とは関係ありません。私はクラスの完全な実装を削ってきた
error: IB Designables: Failed to render and update auto layout status for SermonViewController (1zk-bD-8it): The agent crashed
:明示的にアンラップ、しかし、(すなわちmyImage!.draw(in: rect)
呼び出しがクラッシュにストーリーボード自動レイアウトを起こし
import UIKit
@IBDesignable class DownloadIndicatorControl: UIView {
let requestDownloadImage = UIImage(named: "requestDownloadImage")
let lineWidth: CGFloat = 3.0
override func draw(_ rect: CGRect) {
// Draw Image
requestDownloadImage?.draw(in: rect)
// Draw ring around image
let radius: CGFloat = fmin(self.bounds.width, self.bounds.height)/2 - lineWidth/2
let center: CGPoint = CGPoint(x: self.bounds.size.width/2, y: self.bounds.size.height/2)
let disk: UIBezierPath = UIBezierPath()
disk.lineWidth = lineWidth
disk.addArc(withCenter: center,
radius: radius,
startAngle: CGFloat(-Double.pi/2),
endAngle: CGFloat(2 * Double.pi - Double.pi/2),
clockwise: true)
disk.stroke()
}
override init(frame: CGRect){
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
ものはありますそのI