cyb*_*gen 4 interface-builder uiview ios ibinspectable
UIView
我正在通过子类化并使用@IBInspectable
一些变量来实现自定义视图。其中两个是 UIImage。如果我尝试在代码中访问其中之一,界面生成器会崩溃并显示以下消息:
file:///PathToMyProject/MyProject/Pod/Classes/UI/View/MyView.xib: error: IB Designables: Failed to update auto layout status: The agent crashed
Run Code Online (Sandbox Code Playgroud)
和
file:///PathToMyProject/MyProject/Pod/Classes/UI/View/MyView.xib: error: IB Designables: Failed to render instance of MyView: The agent crashed
Run Code Online (Sandbox Code Playgroud)
一切在模拟器和设备上运行良好。以下是重现它的方法,假设image_one.png
位于资产中:
import UIKit
@IBDesignable
class MyView: UIView {
@IBInspectable
var anImage: UIImage = UIImage(named: "image_one")!
}
Run Code Online (Sandbox Code Playgroud)
事实上,界面生成器代理在初始化该变量时崩溃。如果您编写var anImage: UIImage! = UIImage(named: "image_one")
,则代理在访问此变量时会崩溃(如上所述)。
有任何想法吗?
小智 5
您不必在 IB 的检查器中设置图像,这是一个纯粹用代码编写的解决方案。
let bundle = Bundle(for: self.classForCoder)
image = UIImage(named: "your_image.png", in: bundle, compatibleWith: self.traitCollection)!
self.setImage(image, for: .normal)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1091 次 |
最近记录: |