2016-09-26 8 views
7

UITableViewはアプリ内にシンプルであり、tableView.tableHeaderViewプロパティのカスタムビューがあります。このプロパティを設定すると、ビューのサイズ(全幅、約45ピクセル)が適切になります。 IOSの9および以前のバージョンでiOS 10のUITableViewヘッダービューオーバーラップセル

[_resultHeaderView sizeToFit]; // the view as the correct frame 
[_resultTableView setTableHeaderView:_resultHeaderView]; 

、ヘッダが正しく表示されるが、IOSの10において、細胞は、私のヘッダビューは最初のセル上に表示されるように、私のヘッダビューと同じ座標Yで開始。

self.edgesForExtendedLayout = UIRectEdgeNone; 
self.automaticallyAdjustsScrollViewInsets = NO; 

は何かがiOSの10で変更されました。この異なる振る舞いを説明できる。これらのプロパティを設定する

も効果がありませんか?良い解決策は何でしょうか?

おかげ

+0

これはセクションのヘッダーではなく、全体のテーブルビューヘッダーです。 (セクションにはヘッダーがありません)。私はこれを参照しています:https://developer.apple.com/reference/uikit/uitableview/1614904-tableheaderview?language=objcさらに、私の設定はiOS 9以降で動作するので、問題ではないと思います... – invalidArgument

+0

なぜこの質問に-1が付きましたか?私はここで私の参加を向上させることができるので、説明することはいいだろう... – invalidArgument

答えて

6

バグは、ビューが自動的にリサイズされていたので、それが行動を説明するのtableViewに装着されていたとき、そのフレームの高さが本当に0だったという事実でした。

autoresizingMaskをnoneに設定すると、このバグが修正されました。

_headerView.autoresizingMask = UIViewAutoresizingNone

再び、それは以下のiOS 9とに必要ではなかったです。これが他の人に役立つことを願っています

+0

ありがとう男!これは難解でした:) –

+9

Swift 3のUIViewAutoresizingNoneにUIViewAutoresizing値を設定するには、[] –