自定义视图中的图片无法实时呈现

时间:2017-06-27 10:30:48

标签: ios swift uiview swift3 xcode8

我正在构建一个自定义UIView,用于导航栏,并希望在我的故事板中的视图控制器中显示此栏。 酒吧有两个部分。一个UIView用于背景,一个UIImageView用于波形图像。我的问题是,如果我在故事板中使用该自定义视图,只有背景UIView得到实时渲染而图像没有。如果我为图像设置@IBInspectable并将其设置为检查器中的UIImageView,则可以正常工作。

以下是条形图:

Bar1

这就是它在视图控制器中的样子: Bar2

这是我的代码(Swift 3):

TopBar.swift

@IBDesignable
class TopBar: UIView {

    override init(frame: CGRect) {
        super.init(frame: frame)
        initView()
    }

    required init?(coder: NSCoder) {
        super.init(coder: coder)
        initView()
    }

    func initView() {
        let bundle = Bundle(for: type(of: self))
        let nib = UINib(nibName: "TopBar", bundle: bundle)
        let view = nib.instantiate(withOwner: self, options: nil).first as! UIView

        view.frame = bounds
        view.autoresizingMask = [.flexibleWidth, .flexibleHeight]

        addSubview(view)
    }
}

2 个答案:

答案 0 :(得分:0)

尝试实现awakeFromNib方法并添加prepareForInterfaceBuilder方法

SELECT tp.tp_id, m1.result as r1, m2.result as r2 
FROM tourneyplayers tp, motos m1, motos m2 
,heats h1, heats as h2
WHERE tp.tp_id = m1.tpid
AND tp.tp_id = m2.tpid
AND tp.tourneyId = 115 
AND ageId = 16
AND m2.idHeat = h1.heatId
AND m1.idHeat = h2.heatId

<强> EDITED

这很奇怪,因为我一直使用这个类,并且在我的故事板中可以很好地渲染

override func awakeFromNib() {
    super.awakeFromNib()
    self.initView()
}

override func prepareForInterfaceBuilder() {
    super.prepareForInterfaceBuilder()
    self.initView()
}

还要确保您的类在xib文件中设置为fileOwner

希望这有帮助

答案 1 :(得分:0)

经过与Reinier Melian的多次讨论以及许多反复试验之后,我才弄明白是什么导致了这个问题。

在我的Assets.xcassets文件夹中,我导入了仅用于iPhone设备的图像。在检查器中将此设置为通用后,所有内容都与我的问题中列出的代码一致。

无论如何,非常感谢给Reinier Melian帮助我! (https://stackoverflow.com/users/6190582/reinier-melian