In my requirement currently,I wanted to develop a Pintrest layout view. For that I have 2 tableView's on same ScrollView.
mark: I didn't use collectionView as it was very difficult to customize the flow Layout for this purpose & I do not want to include a 3rd Party framework for the same.
Check the attached screenshot -
I am populating them with 2 arrays one for even & one for odd items. I am making these tableView's non scrollable & increasing my scrollView's contentView's height as per the tallest tableView. Both the tableView's have custom cells with dynamically increasing contents i.e a label.
in my viewDidLoad()
self.tableViewCol1.estimatedRowHeight = 296
        self.tableViewCol1.rowHeight = UITableViewAutomaticDimension
        self.tableViewCol1.separatorStyle = UITableViewCellSeparatorStyle.None
        self.tableViewCol2.estimatedRowHeight = 296
        self.tableViewCol2.rowHeight = UITableViewAutomaticDimension
        self.tableViewCol2.separatorStyle = UITableViewCellSeparatorStyle.None
in my DataSource method -
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
        {
            var cell2 = MostLikedTVCscnd()//custom Cell for 2nd Table
            var cell1 = MostLikedTVC()//custom Cell for 1st Table
            if tableView == tableViewCol1
            {
                let cell = tableViewCol1.dequeueReusableCellWithIdentifier("cell1", forIndexPath: indexPath) as! MostLikedTVC
                cell.imageCol1.image = imageArr1[indexPath.row] as? UIImage
                cell.aboutLblCol1.text = labelArr1[indexPath.row] as? String//dynamic increasing label
                cell1=cell
            }
            else if tableView == tableViewCol2
            {
                let cell = tableViewCol2.dequeueReusableCellWithIdentifier("cell2", forIndexPath: indexPath) as! MostLikedTVCscnd
                cell.imageCol2.image = imageArr2[indexPath.row] as? UIImage
                cell.aboutLblCol2.text = labelArr2[indexPath.row] as? String
                cell2 = cell
            }
//changing the height constraint of table's to make the table view non scrollable
           tableView1HghtCnstrnt.constant = tableViewCol1.contentSize.height
           tableView2HghtCnstrnt.constant = tableViewCol2.contentSize.height
     //comparing the content size of table's to check which table is the tallest & adjust the height of the main ScrollView's content       
            if tableViewCol1.contentSize.height>tableViewCol2.contentSize.height
            {
                mainViewHghtCnstrnt.constant = tableViewCol1.contentSize.height+35//mainViewHghtCnstrnt :- mainScrollView's content height constraint & 35 is the padding
            }
            else if tableViewCol1.contentSize.height<tableViewCol2.contentSize.height
            {
                mainViewHghtCnstrnt.constant = tableViewCol2.contentSize.height+35
            }
            else if tableViewCol1.contentSize.height==tableViewCol2.contentSize.height
            {
                mainViewHghtCnstrnt.constant = tableViewCol2.contentSize.height+35
            }
//returning the cell
            if tableView == tableViewCol1
            {
                return cell1
            }
            else
            {
                return cell2
            }
        }
    }
But my problem is that the table's are not properly calculating the size of their content's. I did some search and here an answer to a question says - contentSize will be messed up when you give estimatedRowHeight
So what options do I have? What can be done to realise the same properly?

 
    
