2017-12-14 16 views
-1

私は、他のビュー(UIImageViewUICollectionView)を持つビューコントローラがあり、内容はスクロール3のiOS用のアプリケーションで作業しています。 UIScrollView。 真ん中のどこかにUITableViewを追加したいと思います。 UITableViewは動的高さのセルを持ちます。 UITableViewのすべてのセルが表をスクロールせずに表示されるようにコンテンツをラップするようにUITableViewの高さを設定することができない場合を除き、すべて機能しています。 UITableViewのスクロールとテーブルビューをオフにして、スクロールせずにすべてのセルを表示できるように高さを設定したいとします。セルの高さが動的である場合のUITableViewの高さの設定

各セルの高さも動的なので、セルの高さに行数を単純に乗算することはできません。

答えて

1

あなたは、コントローラの多くの巣scrollViewsをお持ちの場合はそうでないアプリは

deinit { 
self.YourTableView.removeObserver(self, forKeyPath: "contentSize") 
} 
+0

おかげでVikky。あなたは私の命を救いました。 :)完璧な作業。 – mac

1

高さを手動で計算する必要はありません。tableView.contentSize.heightを使用してください。

+0

tableView.contentSize.heightは常に作業のための正しいheight.Soを提供しませんソリューションは私の答えを参照 – Vikky

1

をクラッシュするあなたはどんなトラブル

に直面しているなら、私が知っているとオブザーバを削除することを忘れないでください、この

// add observer to your tableView to get its proper height when its 
//data is loaded. you can do this in view did load 
self.YourTableView.addObserver(self, forKeyPath: "contentSize",options: .new, context: nil) 

// override this metod to observe for tableView height change 
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?){ 
if(keyPath == "contentSize"){ 

    if let newvalue = change?[.newKey] 
    { 
     let newsize = newvalue as! CGSize 
     // make height constraint for your table view and set to new size. 
     // and here you can check if newSize.height is more than required tha you can set it to default 
     if(newsize.height < defaultHeight) 
     self.tableViewHeightConstraint.constant = newsize.height 

    }else{ 
     self.tableViewHeightConstraint.constant = defaultHeight 

    } 
} 
} 

を試すことができます、 tableView.contentSize.heightは実際のcontentHeightを提供できませんでした。

  1. は遅延アクションを実行します:

    DispatchQueue.main.asyncAfter(締切:DispatchTimeだから、あなたは(tableview`sの高さを設定する)contentHeightを取得したい場合は、二つの方法があります。今()+ 0.1){
    // contentHeightを取得しtableView`s枠を設定

    }
  2. はscrollViewデリゲートに正しい高さを得る:
    scrollViewDidScroll FUNC

    (_ scrollView:UIScrollViewの){
    contentHeight = scrollView.contentSize.height
    せ}

関連する問題