【发布时间】:2017-09-12 11:27:39
【问题描述】:
我有一个 xib 文件,它的高度可以动态改变,因为它包含多行的标签。我需要将此视图添加为在我的视图控制器中定义的 uiview 的子视图。
let settlementDetailsContentView = SettlementDetailsView.instanceFromNib(nibNamed: NibConstants.SettlementDetailsViewNib)
settlementDetailsContentView.frame = settlementDetailsView.bounds
settlementDetailsView.addSubview(settlementDetailsContentView)
这里的settlementDetailsContentView包含了在Interface中设计的视图 建设者。 settingDetailsView 是我的视图控制器中定义的视图,其高度约束大于或等于零。
下面的代码是根据笔尖名称返回视图的函数
class func instanceFromNib(nibNamed : String) -> SettlementDetailsView
{
return UINib(nibName: nibNamed, bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! SettlementDetailsView
}
我所做的问题是,由于视图高度没有根据子视图调整大小,因此结算详细信息视图下方的视图与此重叠。
这是 UI 的外观。声明文档重叠 结算详情视图。
uiview 应该是这样的
【问题讨论】:
-
在添加
settlementDetailsContentView作为子视图后尝试添加settlementDetailsView.setNeedsLayout()。 -
您可以在添加子视图时以编程方式添加高度约束
-
@laxmankhanal setNeedsLayout 不起作用
-
@chirag90 我怎么能找到视图的高度,因为它是动态的,并且某些视图 sinside xib 文件可能会根据某些条件被隐藏
-
尝试将
settlementDetailsView的 maskToBound 属性设置为 true。还要验证settlementDetailsView的框架是否发生变化
标签: ios swift uiview uiviewcontroller