我通过故事板创建了以下布局。它由滚动视图组成,其高度取决于内容的高度。我必须显示红色视图或蓝色视图,具体取决于if条件。因此,当显示红色视图时,滚动视图的高度应为红色视图,当显示蓝色视图时,红色视图的高度应设置为0.
我无法设置红色和蓝色视图的高度限制,因为它们的高度是其组件高度的总和,它是自动计算的(同样,它也会根据来自API的数据而变化)。
我不想使用容器视图。这可以纯粹通过约束来完成吗?
编辑:我希望约束能够支持这一点,我可以用蓝色视图替换红色视图:
答案 0 :(得分:0)
我猜你可以在故事板中为所有三个UI控件提供修复高度。稍后会在代码中动态更改。根据您的要求。 从“界面”构建器中选择高度约束,然后选择它的出口。因此,当您想要更改视图的高度时,可以使用以下代码。
UIObjectHeightConstriant.constant = Height //(any value)
答案 1 :(得分:0)
您可以将框架集用于ScrollView,它非常适合您。
class ViewController: UIViewController
{
@IBOutlet weak var ScrollView : UIScrollView!
@IBOutlet weak var ViewRED : UIView!
@IBOutlet weak var ViewBLUE : UIView!
@IBOutlet weak var ContentView : UIView!
override func viewDidLoad()
{
super.viewDidLoad()
self.ScrollView.frame = CGRect(x: ContentView.frame.origin.x, y:
ContentView.frame.origin.y, width: self.ContentView.frame.size.width,
height:self.ContentView.frame.size.height)
frameset()
}
func frameSet()
{
if view == ViewRED // Here just mention condition for example you can set your condition
{
self.ScrollView.frame = CGRect(x: ViewRED.frame.origin.x, y:
ViewRED.frame.origin.y, width: self.ViewRED.frame.size.width,
height: self.ViewRED.frame.size.height)
}
if view == ViewBLUE//Here just mention condition for example you can set your condition
{
ViewRED.isHidden = true
self.ScrollView.frame = CGRect(x: ViewBLUE.frame.origin.x, y:
ViewRED.frame.origin.y, width: self.ViewBLUE.frame.size.width,
height: self.ViewBLUE.frame.size.height)
}
}
}