Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 困惑于如何/在何处设置Xib';s高度_Ios_Swift_Xcode_Interface Builder - Fatal编程技术网

Ios 困惑于如何/在何处设置Xib';s高度

Ios 困惑于如何/在何处设置Xib';s高度,ios,swift,xcode,interface-builder,Ios,Swift,Xcode,Interface Builder,我有一个自定义视图和xib。我在故事板的一个控制器视图中使用此自定义视图 我有一个用例,我希望能够隐藏自定义视图(并将其高度设置为零)。现在,我在interface builder中设置了高度,并对superview的边设置了约束: 正如你所看到的,我希望它的高度是84 下面是我的自定义视图的类: import UIKit @IBDesignable class BannerView: UIView { @IBOutlet var contentView: UIView!

我有一个自定义视图和xib。我在故事板的一个控制器视图中使用此自定义视图

我有一个用例,我希望能够隐藏自定义视图(并将其高度设置为零)。现在,我在interface builder中设置了高度,并对superview的边设置了约束:

正如你所看到的,我希望它的高度是
84

下面是我的自定义视图的类:

import UIKit

@IBDesignable
class BannerView: UIView {

    @IBOutlet var contentView: UIView!
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        initialize()
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        initialize()
    }
    
    override func awakeFromNib() {
        super.awakeFromNib()
        initialize()
    }
    
    override func prepareForInterfaceBuilder() {
        super.prepareForInterfaceBuilder()
        initialize()
        contentView?.prepareForInterfaceBuilder()
    }
    
    func initialize() {
        guard let view = loadViewFromNib() else { return }
        view.frame = self.bounds
        view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
        addSubview(view)
        contentView = view
    }

    func loadViewFromNib() -> UIView? {
        let bundle = Bundle(for: type(of: self))
        let nib = UINib(nibName: "BannerView", bundle: bundle)
        return nib.instantiate(withOwner: self, options: nil).first as? UIView
    }
    
    func hide() {
        // Hide the view and set its height to zero here
    }

}

但是,现在我很困惑。。。当我将自定义视图加载到我的故事板中时,我是否也应该在自定义视图上设置高度约束?或者它的高度应该是
84
,而我不需要进一步指定它


另外,我如何在上面的
hide()
函数中隐藏自定义视图并将其高度设置为零?

由于您希望视图的高度在任何地方都为84,我认为您应该添加高度约束出口并将值设置为84。
将约束值设置为0以隐藏视图(我强烈建议不要通过这样做来隐藏某些视图)。

有几种方法可以做到这一点。。。这里有一个

给出xib约束的内容,使其高度为84磅。您还没有显示xib的布局,但我假设您知道如何执行此操作

然后,当您将
BannerView
添加到主视图时(我猜这就是您正在做的),使用以下属性将其嵌入垂直
UIStackView

现在,当您设置
bannerView.ishiden=true
时,堆栈视图会自动将其从高度计算中删除,从而使堆栈视图的高度为零


设置
bannerView.ishiden=false
将重新显示横幅视图及其高度。

我是在Xib中设置高度约束,还是在脚本控制器中包括自定义视图?