我通过故事板创建了以下布局。它由滚动视图组成,滚动视图的高度取决于内容的高度。根据if条件,我必须显示红色视图或蓝色视图。因此,当显示红色视图时,滚动视图的高度应设置为红色视图,而当显示蓝色视图时,应将红色视图的高度设置为0。
我不能设置红色和蓝色视图的高度约束,因为它们的高度是其组件的高度之和,这是自动计算的(而且,它根据来自API的数据而变化)。
我不想使用容器视图。这可以完全通过约束来完成吗?

编辑:我希望约束是支持这一点的东西,在那里我可以用蓝色视图替换红色视图:

发布于 2018-04-16 17:02:46
我猜你可以在故事板中给出所有三个UI控件的固定高度。并且更改在稍后的代码中是动态的。按照您的要求。从接口构建器中选择高度约束,并将其导出。所以,当你想改变视图的高度时,你可以使用下面的代码。
UIObjectHeightConstriant.constant = Height //(any value)发布于 2018-04-16 17:59:45
你可以使用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)
}
}
}https://stackoverflow.com/questions/49853176
复制相似问题