故事板约束:替换视图;调整滚动视图高度 - Swift 3

时间:2018-04-16 08:50:05

标签: ios swift uiscrollview autolayout storyboard

我通过故事板创建了以下布局。它由滚动视图组成,其高度取决于内容的高度。我必须显示红色视图或蓝色视图,具体取决于if条件。因此,当显示红色视图时,滚动视图的高度应为红色视图,当显示蓝色视图时,红色视图的高度应设置为0.

我无法设置红色和蓝色视图的高度限制,因为它们的高度是其组件高度的总和,它是自动计算的(同样,它也会根据来自API的数据而变化)。

我不想使用容器视图。这可以纯粹通过约束来完成吗?

enter image description here

编辑:我希望约束能够支持这一点,我可以用蓝色视图替换红色视图:

enter image description here

2 个答案:

答案 0 :(得分:0)

我猜你可以在故事板中为所有三个UI控件提供修复高度。稍后会在代码中动态更改。根据您的要求。 从“界面”构建器中选择高度约束,然后选择它的出口。因此,当您想要更改视图的高度时,可以使用以下代码。

UIObjectHeightConstriant.constant = Height //(any value)

答案 1 :(得分:0)

您可以将框架集用于ScrollView,它非常适合您。

click here

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)
  }
 }
}