Ios 困惑于如何/在何处设置Xib';s高度
我有一个自定义视图和xib。我在故事板的一个控制器视图中使用此自定义视图 我有一个用例,我希望能够隐藏自定义视图(并将其高度设置为零)。现在,我在interface builder中设置了高度,并对superview的边设置了约束: 正如你所看到的,我希望它的高度是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!
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中设置高度约束,还是在脚本控制器中包括自定义视图?