theUturn
theUturn

Reputation: 1131

Swift 2 how to expand and collapse a view?

I have scrollView in which if there is no data, I need to hide (collapse the space occupied by it) so that the lower view can come upwards.

I tried this code with no luck. Please help me.

if(dataForScroll==0){

       var   newFrame:CGRect = self.myScroll.frame;

   newFrame.size.height = 0;
   self.myScroll.frame = newFrame



           }

Upvotes: 0

Views: 1467

Answers (1)

Abirami Bala
Abirami Bala

Reputation: 790

A simple example with Swift 3 version, i think it might be solves your problem. Let me know if have any queries

 @IBOutlet var mainScrollView: UIScrollView!
 @IBOutlet var view1: UIView!
 @IBOutlet var view2: UIView!
 @IBOutlet var view3: UIView!

 var data1 = NSArray()
 var data2 = NSArray()
 var data3 = NSArray()

func setFrame()
{
  //  data = Something you need to get

    if data1.count == 0
    {
        self.view1.frame.size.height = 0
    }
    else
    {
       // return its actual height you need
    }
    if data2.count == 0
    {
        self.view2.frame.size.height = 0
    }
    else
    {
        // return its actual height you need
    }
    if data3.count == 0
    {
        self.view3.frame.size.height = 0
    }
    else
    {
        // return its actual height you need
    }

    var frame = self.view1.frame
    frame.origin.y = 5
    self.view1.frame = frame

    frame = self.view2.frame
    frame.origin.y = self.view1.frame.origin.y + self.view1.frame.size.height + 5
    self.view2.frame = frame

    frame = self.view3.frame
    frame.origin.y = self.view2.frame.origin.y + self.view2.frame.size.height + 5
    self.view3.frame = frame

    var scrollHeight:CGFloat = 0.0
    var contentRect:CGRect = CGRect.zero

    for views in self.mainScrollView.subviews
    {
        let subView:UIView = views
        contentRect = contentRect.union(subView.frame)
        print(subView.frame.size.height)
        scrollHeight = scrollHeight + subView.frame.size.height
    }

    self.mainScrollView.contentSize = CGSize(width: UIScreen.main.bounds.width, height: scrollHeight + 20) // the "+ 20" reamains the spaces between the views, you can change as per your need
}

Upvotes: 1

Related Questions