gpt4 book ai didi

ios - 根据从 xib 文件加载的 subview 调整 UIView 的大小

转载 作者:行者123 更新时间:2023-11-28 06:12:24 27 4
gpt4 key购买 nike

我有一个 xib 文件,它的高度可以动态改变,因为它包含多行标签。我需要将此 View 添加为在我的 View Controller 中定义的 uiview 的 subview 。

let settlementDetailsContentView = SettlementDetailsView.instanceFromNib(nibNamed: NibConstants.SettlementDetailsViewNib)
settlementDetailsContentView.frame = settlementDetailsView.bounds
settlementDetailsView.addSubview(settlementDetailsContentView)

这里的settlementDetailsContentView包含了在Interface中设计的 View build 者。 settlementDetailsView 是在我的 View Controller 中定义的 View ,其高度约束大于或等于零。

下面的代码是根据 nib 名称返回 View 的函数

 class func instanceFromNib(nibNamed : String) -> SettlementDetailsView
{
return UINib(nibName: nibNamed, bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! SettlementDetailsView
}

我所做的问题是 settlementdetailsview 下面的 View 与此重叠,因为 View 高度没有根据 subview 调整大小。

This is how the UI looks.Claim documents overlapping on settlementDetails view.

This is how the view looks.

This is how the uiview should look like

enter image description here

最佳答案

问题是您没有更改 settlementDetailsView 的框架。在下面的代码中

let settlementDetailsContentView = SettlementDetailsView.instanceFromNib(nibNamed: NibConstants.SettlementDetailsViewNib)
settlementDetailsView.addSubview(settlementDetailsContentView)
settlementDetailsContentView.translatesAutoresizingMaskIntoConstraints = false
settlementDetailsContentView.topAnchor.constraint(equalTo: settlementDetailsView.topAnchor).isActive = true
settlementDetailsContentView.bottomAnchor.constraint(equalTo: settlementDetailsView.bottomAnchor).isActive = true
settlementDetailsContentView.trailingAnchor.constraint(equalTo: settlementDetailsView.trailingAnchor).isActive = true
settlementDetailsContentView.leadingAnchor.constraint(equalTo: settlementDetailsView.leadingAnchor).isActive = true

你限制 subview 增长到 superView 的完整大小或者 superView 缩小到 subview 的大小(这取决于 superview 的约束和两者的拥抱/压缩,但应该给你的愿望影响)。

参见 autolayout引用

编辑

现在您已经发布了它应该是这样的,下面的代码完成了:

let superView = settlementDetailsView.superview!
let settlementDetailsContentView = SettlementDetailsView.instanceFromNib(nibNamed: NibConstants.SettlementDetailsViewNib)
superview.addSubview(settlementDetailsContentView)
settlementDetailsContentView.translatesAutoresizingMaskIntoConstraints = false
settlementDetailsContentView.topAnchor.constraint(equalTo: settlementDetailsView.bottomAnchor).isActive = true
settlementDetailsContentView.bottomAnchor.constraint(equalTo: superview.bottomAnchor).isActive = true
settlementDetailsContentView.trailingAnchor.constraint(equalTo: superview.trailingAnchor).isActive = true
settlementDetailsContentView.leadingAnchor.constraint(equalTo: superview.leadingAnchor).isActive = true

请注意,如果 settlementDetailsView 对其 superView 有底部约束,您应该停用它。

关于ios - 根据从 xib 文件加载的 subview 调整 UIView 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46175219/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com