2017-03-06 4 views
0

リスト(tableView)の上にUIView(バナー)を配置しようとしているため、ユーザーがリストをスクロールしてもUIviewが消えません。 このコードを試しましたが、うまくいきませんでした。TableViewの上にあるUiView

override func viewDidLayoutSubviews() { 
    self.view.addSubview(banner) 
    banner.frame.size.width = self.view.frame.size.width 
} 
override func scrollViewDidScroll(_ scrollView: UIScrollView) { 
    var rect = self.banner.frame 
    rect.origin.y = max(0,scrollView.contentOffset.y + scrollView.contentInset.top) 
    self.banner.frame = rect 
} 

どのようにそれを修正するためのアドバイス?あなたは

+1

デザインを共有してください、あなたは正確になぜあなたはテーブルビューでスクロールビュー機能を使用している –

+0

を何をしたいのか?バナーの幅だけを定義しましたが、高さはどうですか? –

+0

View Controllerを 'UIViewController'または' UITableViewController'からサブクラス化していますか?あなたが望むスクリーンショットを共有できますか? – Adeel

答えて

2

代わりscrollView内のビューを維持しようとしているのは、はるかに簡単方法は、UIViewとの底部に取り付けられconstraintsUITableViewAutoLayoutを使用してトップに添付UIViewと標準UIViewControllerを使用することですありがとうUIViewControllerの下にあります。

このレイアウトでは、tableViewのほうがスクロールし、UIViewはスクロールする範囲外で固定されます(UITableViewCells)。

あなたが現在UITableViewControllerを使用している場合、あなたは、あなたのtableView方法からoverride修飾子を削除し、あなたのUIViewControllerUITableViewDataSourceUITableViewDelegateを実装します、その後、いずれかのコードやストーリーボードにdelegatesを添付する必要があります。

あなたUIViewController新しいが先頭に次のようになります。

class MyController: UIViewController, UITableViewDataSource, UITableViewDelegate { 
    ... 
} 
+0

はい、私はそれについて考えましたが、 、それはリストのメインセルの一部ではないので(テーブルビュー) – lukas28277

+0

@ lukas28277があるので、上にuiviewを貼る方法。私が作成した重複リンクを確認してください。 –

+0

@ lukas28277ビューがリストの主要なセルの一部ではないという事実は私のアプローチを推奨する正確な理由です。記述しているこのアクセサリビューとテーブルビューのロジックを完全に分離しています。 – Kyle

関連する問題