IOS7以降、私のUITableView
の先頭には、UITableViewStyleGrouped
というスタイルの追加スペースがあります。
これが一例です。
テーブルビューは最初の矢印から始まり、説明できないパディングが35ピクセルあります、そして緑色のヘッダーはUIView
によって返されるviewForHeaderInSection
です(セクションは0です)。
誰がこの35ピクセルの量がどこから来ているのか、そしてどのようにしてUITableViewStylePlain
に切り替えることなくそれを取り除くことができるのか説明できますか?
私は最初のバグの原因を突き止め、それを紹介するサンプルプロジェクトを作成しました。 iOS7のバグがあると思います。
IOS 7の時点で、グループスタイルでUITableViewを作成し、最初のレイアウトにデリゲートを設定していない場合は、デリゲートを設定してreloadDataを呼び出すと、最上部に35pxのスペースがなくなることはありません。
私がこのバグを紹介して作ったこのプロジェクトを見てください: https://github.com/esilverberg/TableViewDelayedDelegateBug
24行目がアクティブの場合
[self performSelector:@selector(updateDelegate) withObject:nil afterDelay:0.0];
上部に35ピクセルのスペースが追加されます。 27行目がアクティブで、24行がコメントアウトされている場合、
self.tableView.delegate = self;
上部にスペースがありません。 tableViewが結果をどこかにキャッシュしていて、デリゲートが設定されreloadDataが呼び出された後にそれ自身を再描画していないようです。
私はもう少し遊んでみましたが、これはtableViewのtableHeaderView = nil
を設定することによる副作用のようです。
私のtableViewは動的に現れるtableHeaderView
を持っているので、self.tableView.tableHeaderView = nil;
をする代わりにtableHeaderView
を隠す必要があるときは、
self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableView.bounds.size.width, 0.01f)];
contentInset.top
も動的に使用するので、私はこの解決策が多少恣意的なcontentInset.top
を設定するよりも好きです。 contentInset.top
を再計算するたびに余分な35pxを削除することを忘れないでください。
IOS 7の場合、View ControllerでTableviewを使用している場合は、次のようになります
self.edgesForExtendedLayout = UIRectEdgeNone;
あなたの問題は私のものと似ていたようです
更新:
IOS 9.xでSwift:
self.edgesForExtendedLayout = UIRectEdge.None
スイフト3:
self.edgesForExtendedLayout = UIRectEdge.init(rawValue: 0)
contentInset
がUITableView
から継承するUIScrollView
プロパティを変更してみてください。
self.tableView.contentInset = UIEdgeInsetsMake(-20, 0, 0, 0);
これは回避策ですが、うまくいきます
self.automaticallyAdjustsScrollViewInsets = NO;
試して、あなたはそれに対処することができます!
アプリがiOS7以降を実行しているかどうかを検出し、この2つのメソッドをテーブルビューデリゲートに(通常はUIViewControllerコードに)追加します。
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return CGFLOAT_MIN;
}
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return CGFLOAT_MIN;
}
これはたぶんエレガントな解決策ではありませんが私のために働きます
スイフトバージョン:
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return CGFloat.leastNormalMagnitude
}
override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return CGFloat.leastNormalMagnitude
}
もう1つの簡単なコメント... XCode 6.1でも、UIScrollViews
、UITextViews
、UITableViews
の先頭に縦方向のスペースが表示されるというバグがあります。
時々、この問題を解決する唯一の方法はストーリーボードに入って問題コントロールをドラッグすることで、もはやページの first サブビューではなくなることです。
( Oded に感謝します。このコメントを投稿しています...いくつかのスクリーンショットを追加して、症状の説明と修正を行っています。)
Appleのこの iOS7への移行ガイド によれば、スクロールビューのコンテンツインセットは自動的に調整されます。 automaticallyAdjustsScrollViewInsets のデフォルト値はYESに設定されています。
UITableViewを持つUIViewControllerは、このプロパティをNOに設定する必要があります。
self.automaticallyAdjustsScrollViewInsets = NO;
これでうまくいくでしょう。
編集1:
また、試してみることができます -
self.navigationController.navigationBar.translucent = YES;
これにより、上部の余分な余白も削除されます。
グループ化されたTableViewを使用している間、viewWillAppearでボーダーカットを避けるためにこれを使用してください
self.tableView.contentInset = UIEdgeInsetsMake(-35, 0, 0, 0);
上記の多くの答えはあまりにも厄介です。 Appleがこの予期しない動作を修正することにした場合、将来いつでもそれらは壊れるでしょう。
問題の根本:
UITableView
は高さ0.0のヘッダを持ちたくありません。あなたがやろうとしているのが高さ0のヘッダを持つことであるならば、あなたは解決策に飛ぶことができます。
後であなたがあなたのヘッダに0.0以外の高さを割り当てたとしても、UITableView
は最初は0.0の高さのヘッダを割り当てられたくありません。
解決策:
次に、最も単純で信頼性の高い方法は、テーブルビューに割り当てるときにヘッダーの高さが0にならないようにすることです。
このような何かがうまくいくでしょう:
// Replace UIView with whatever class you're using as your header below:
UIView *tableViewHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.tableView.bounds.size.width, CGFLOAT_MIN)];
self.tableView.tableHeaderView = tableViewHeaderView;
このようなことがある時点(通常はスクロール後)で問題を引き起こす可能性があります。
// Replace UIView with whatever class you're using as your header below:
UIView *tableViewHeaderView = [[UIView alloc] initWithFrame:CGRectZero];
self.tableView.tableHeaderView = tableViewHeaderView;
絵コンテ:
View ControllerのオプションにあるAdjust Scroll View Insets
のチェックを外します。
コード:
self.automaticallyAdjustsScrollViewInsets = false
これはSwift 3を使ったiOS 10用の解決策です:
UITableViewDelegate
から以下のメソッドを実装することで上下のパディングを取り除くことができます。
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat
{
return CGFloat.leastNormalMagnitude
}
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat
{
return CGFloat.leastNormalMagnitude
}
私の場合、これが私の役に立ちました。私はios6もサポートしています。
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
self.edgesForExtendedLayout = UIRectEdgeNone;
self.extendedLayoutIncludesOpaqueBars = NO;
self.automaticallyAdjustsScrollViewInsets = NO;
}
だから私はここですべての方法を試していましたが、今回は誰も助けませんでした。私の場合は、iOS 9のグループ化されたテーブルビューでした。これを見つけた理由と方法はわかりませんが、私にとっては、tableViewHeader
に少なくとも0.01
の高さのUIView
を設定しました。 CGRectZero
は役に立たず、何も役に立たなかった:
tableView.tableHeaderView = UIView(frame: CGRect(x: 0.0, y: 0.0, width: 0.0, height: 0.01))
VCのviewDidLoadに以下を追加するだけです。
self.automaticallyAdjustsScrollViewInsets = NO;
@Aurelien Porteの回答のおかげで。これが私の解決策です
この問題の原因: -
ViewDidLoadの場合: -
self.edgesForExtendedLayout = UIRectEdge.None
self.automaticallyAdjustsScrollViewInsets = false
このようなものは必要ありません: -
self.myTableview.contentInset = UIEdgeInsetsMake(-56, 0, 0, 0)
heightForHeaderInSection
デリゲートで: -
if section == 0
{
return 1
}
else
{
return 40; // your other headers height value
}
viewForHeaderInSection
デリゲートで: -
if section == 0
{
// Note CGFloat.min for Swift
// For Objective-c CGFLOAT_MIN
let headerView = UIView.init(frame: CGRectMake(0.0, 0.0, self.myShaadiTableview.bounds.size.width, CGFloat.min))
return headerView
}
else
{
// Construct your other headers here
}
Swift:iOSスクロールビューでテーブルビューをしていました。同じ画面で[戻る]をクリックしたとき。これを解決するために、スクロールビューの上にもっとスペースを取ってください。
self.automaticallyAdjustsScrollViewInsets = false
View Controllerがそのスクロールビューインセットを自動的に調整するかどうかを示すブール値。デフォルト値はtrueで、ステータスバー、ナビゲーションバー、およびツールバーまたはタブバーによって消費される画面領域に応じて、View Controllerがそのスクロールビューのインセットを調整できるようにします。ビュー階層に複数のスクロールビューがある場合など、スクロールビューのインセット調整を自分で管理する場合は、falseに設定します。
私の答えはもっと一般的な答えになるでしょうが、これにも適用することができます。
ルートビューの ルートビュー ( ViewController の)または 最初の子(サブビュー) がUIScrollView(またはUIScrollView自体)のサブクラスである場合
self.navigationController.navigationBar.translucent = YES;
フレームワークは自動的に 事前計算されたcontentInsetを設定します 。
これを避けるためにあなたはできる
self.automaticallyAdjustsScrollViewInsets = NO;
しかし、私の場合はこれができませんでした。他の開発者が使用できるUIViewコンポーネントを含むSDKを実装していたからです。そのUIViewコンポーネントにはUIWebView(最初のサブビューとしてUIScrollViewがあります)が含まれています。そのコンポーネントがUIViewControllerのビュー階層の最初の子として追加されると、自動インセットがシステムによって適用されます。
UIWebViewを追加する前に、 ダミービューをframe(0,0,0,0) で追加することでこれを修正しました。
この場合、システムは最初のサブビューとしてUIScrollViewのサブクラスを見つけず、インセットを適用しませんでした。
私はそれが新しいUITableViewStyleGrouped
スタイルの一部にすぎないと思います。これはすべてのグループ化されたテーブルビューにあり、そのスペースを制御する直接的な方法はないようです。
そのスペースがUIView
で表されている場合、その特定のビューを見つけて直接編集するためにsubviews
のすべてのUITableView
を検索することが可能です。ただし、ヘッダーとセルが始まる前にそのスペースが単なるハードコードされたオフセットであり、編集する方法がない可能性もあります。
すべてのサブビューを検索するには(出力を読みやすくするために、テーブルにセルがないときにこのコードを実行します)。
- (void)listSubviewsOfView:(UIView *)view {
// Get the subviews of the view
NSArray *subviews = [view subviews];
// Return if there are no subviews
if ([subviews count] == 0) return;
for (UIView *subview in subviews) {
NSLog(@"%@", subview);
// List the subviews of subview
[self listSubviewsOfView:subview];
}
}
これは、ストーリーボードを介してiOS 11およびXcode 9.1で簡単に修正できる方法です。
表形式/サイズインスペクタ/コンテンツインセットを選択します。
UIEdgeInsetsを-35 0 0 0にするのは面倒です。私の場合は、tableView:heightForHeaderInSection:メソッドを実装しましたが、0を返す可能性があります。
0を0.1fに変更すると、問題は解決しました。
私はarielyzと同じ修正をしました。 UITableViewを親ビューの最初のサブビューにならないように移動したら、それは消えました。私のスペースは35ではなく、20ピクセルでした。
縦置きxibでは再現できませんでした。横置きxibのみです。簡単なデモアプリで再現できるのであれば、あとでレーダーのバグを報告するつもりです。
override func viewWillAppear(animated: Bool) {
self.edgesForExtendedLayout = UIRectEdge.None
// OR
self.sampleTableView.contentInset = UIEdgeInsetsMake(-64, 0, 0, 0);
//OR
self.automaticallyAdjustsScrollViewInsets = false
}
私のために働いたことが唯一のものでした:
スイフト :
tableView.sectionHeaderHeight = 0
tableView.sectionFooterHeight = 0
Objective-C :
self.tableView.sectionHeaderHeight = 0;
self.tableView.sectionFooterHeight = 0;
また、私はまだ最初のセクションのための余分なスペースがありました。これはtableHeaderView
プロパティを間違って使用していたためです。次のものを追加することでそれを修正しました:
self.tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 0.01))
これを使う私はこの助けと思う...
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 0.005f;// set this according to that you want...
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return CGFLOAT_MIN;
}
それはすべての人です!
これには複数の答えがあります。
1)ビューdidloadでUIImageviewを追加できます
UIImageView * imbBackground = [UIImageView new];
[self.view addSubview:imbBackground];
2)ヘッダーとフッターの高さを0.1に設定できます
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.1;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 0.1;
}
3)高さ0.1のヘッダとフッタのビューを追加できます
tblCampaigns.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, tblCampaigns.bounds.size.width, 0.01f)];
tblCampaigns.tableFooterView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, tblCampaigns.bounds.size.width, 0.01f)];
私はこれにも頭をぶつけてきました。確かにこれはiOS7のバグです。最終的に私を助けたのは、xibでのビューの順序です。テーブルビューが正しく表示されるビューと、テーブルビューに余分な35ピクセルのスペースがあるビューがありました。当時(UITableViewに関して)の唯一の違いは、表示が悪いビューではUITableViewが最初の子だったのに対し、正しく表示されていたビューでは2番目の子だったことです。
ビューの順序を変更するだけで、これは私にとってトリックでした。回避策として、余分なコードを追加しないことをお勧めします。
Swift 4のコード:セクションヘッダのないtableviewのために、このコードを追加することができます:
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return CGFloat.leastNormalMagnitude
}
そして、あなたは0にヘッダ間隔を得るでしょう。
あなたがあなたの特定の身長のヘッダーが欲しいならば、その値を渡しなさい:
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return header_height
}
viewForHeaderinSectionデリゲートからのビュー。
テーブルビューをビューの一番上に固定する(または開始する)だけです。追加の不要なスペースは正確にナビゲーションバーの高さです。
tableView.contentInsetAdjustmentBehavior = .never
私のための解決策だった(iOS 12/xcode 10)ヘッダー付きのプレーンなテーブルビュー
下記(Swift)を実行すると問題は解決します。 しかし これはヘッダが不要な場合に機能します。
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return CGFloat.min
}
そうした場合は、最初のセクションを放棄し、他のセクションをコンテンツに使用する必要があります。
UITableViewDataSource
の実装:
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return <number_of_data_sections>+1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// the first section we don't use for data
if section == 0 {
return 0
}
// starting from 1, there are sections we use
if section == 1 {
let dataSection = section - 1
// use dataSection for your content (useful, when data provided by fetched result controller). For example:
if let sectionInfo = myFRC!.sections![dataSection] as? NSFetchedResultsSectionInfo {
return sectionInfo.numberOfObjects
}
}
return 0
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let dataIndexPath = NSIndexPath(forRow: indexPath.row, inSection: (indexPath.section - 1) )
// return cell using transformed dataIndexPath
}
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
if section == 1 {
// return your header height
}
return CGFloat.min
}
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
if section == 1 {
// return your header view
}
return nil
}
func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
// in my case, even when 1st section header was of zero heigh, I saw the space, an that was a footer. I did not need footer at all, so always gave zero height
return CGFloat.min
}
以上です。データにアクセスするとセクション番号が変換されるため、モデルは変更について何も知りません。
Interface Builder
から削除UITableView
、もう一度作成した、そして変わった35pxがなくなりました。
Interface Builder
に奇妙なバグがあるようです。
uITableViewStyleGroupedのスタイルを選択した場合は、Header
およびFooter
heightデリゲートメソッドを実装する必要があり、戻り値は0より大きい必要があります。このような:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return CGFLOAT_MIN;
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return CGFLOAT_MIN;
}
TableHeaderViewを非表示にする必要がある場合は、次のSwift 3コードを使用してください。
tableView.tableHeaderView = UIView(frame: CGRect(Origin: .zero, size: CGSize(width: 0.0, height: CGFloat.leastNormalMagnitude)))
絵コンテ付き:
UITableViewの上部の制約に「Under top layout guide」と表示されていないことを確認してください。代わりに、 "Top space to:Superview"(Superview.Top)と言うべきです。
もちろんUITableViewを含むUIViewControllerでは、 "Adjust Scroll View Insets"のチェックを外してください。
self.automaticallyAdjustsScrollViewInsets = NO;
これはiOS 11で廃止予定だったので、あなたはあなたのコードの中で新しいプロパティcontentInsetAdjustmentBehavior
を使うべきです、それは問題を解決するべきです。
if #available(iOS 11.0, *) {
collectionView.contentInsetAdjustmentBehavior = .never
}
UIScrollViewにcontentInsetAdjustmentBehaviorという新しいプロパティが追加されました。これはiOS 11で追加され、コンテンツオフセットの調整を決定します。
コンテナが入ったVCがあり(これはNavコントローラの一部です)、その中に埋め込まれているのがTableVCです。
属性パネルを見て私のTableVCを選択します。
次に、親ビューに対するコンテナの自動制約を次のように設定します。
コンテナView.top = ParentView.Top Margin
これは私にとって次のことを実現します。
このセットアップで私には試行錯誤がたくさんありましたが、lekksi @ UITableViewのセルの前に空のスペースを削除 によって投稿されたこれらの詳細が最終的に見つかりました。
私はあなたがやろうとしていることに応じてこの質問に多くの答えがあることに気づいたので、誰かが同じ効果を得るために行っている場合に備えて私は私のものを共有する。
私のView Controllerでは、UITableView
が、高さ200ポイントのtableHeaderView
、および広告のタイトル、価格、場所、投稿された時間を含む単一のUIScrollView
で構成されているグループ化されたUILabel
があります。その下にテーブルビューの内容があります。
グループ化されたTable Viewヘッダーのデフォルトのディメンションでは、 "MORE INFO"ヘッダーは "5日前"ラベルをはるかに下回っています。各セクションのヘッダーとフッターの高さをオーバーライドすることで(すでに上の画像を)修正しました。
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return section == kMoreInfoSection ? 33 : UITableViewAutomaticDimension;
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return UITableViewAutomaticDimension;
}
私は、受け入れられた回答の@ erurainonのコメントと、 https://stackoverflow.com/a/14404104/855680 のUITableViewAutomaticDimension
から、高さを上書きすることについて学びました。私のビューコントローラでself.automaticallyAdjustsScrollViewInsets
をNO
に設定する必要はありませんでした。
また、UIEdgeInsets
を設定してTable Viewの先頭に負の値を設定しようとしましたが、うまくいきませんでした - tableHeaderView
も含めてTable View全体が上に移動します。
テーブルに制約が与えられていることを確認してください。私は、表の一番下に説明のつかないパディングがあるという同様の問題に直面したことはありませんでした。
私はすべての答えを調べました。誰も私のために働きませんでした。私がしなければならなかったのは、
self.myTableView.rowHeight = UITableViewAutomaticDimension
self.myTableView.estimatedRowHeight = 44.0
また、この問題はtableViewの上部では発生していませんでした。それはtableViewの各 section の一番上で起こっていました。
しかし、この問題はiOS9でのみ発生していました。私たちのアプリはiOS10とiOS 11でうまく動きました。
この素晴らしい質問とその最高の答えを見ることを強くお勧めします。
私の場合は、ストーリーボードのプロトタイプ視覚化で "HeaderView"と呼ばれる不要なセルがありました。削除したときには、すべて問題ありませんでした。
self.automaticallyAdjustsScrollViewInsets = NO;
が機能しない場合、tableviewヘッダーまたはセクションヘッダーの高さがCGFLOAT_MIN
ではなく0
であることを確認してください。
たとえば、TableViewヘッダーを0にしたい場合は、次のことができます。
CGRect frame = self.tableViewHeader.frame;
frame.size.height = CGFLOAT_MIN; //not 0
self.tableView.tableHeaderView.frame = frame;
self.tableView.tableHeaderView = self.tableViewHeader;
それが役に立てば幸い。
Swift3
If you are using grouped table then do following things .
This will remove top space.
var frame = CGRect.zero
frame.size.height = .leastNormalMagnitude
self.tableView.tableHeaderView = UIView(frame: frame)
self.tableView.tableFooterView = UIView(frame: frame)
If you Still getting this issue then it will remove by default content offset from top.
[Set content insets never]
最後にすべてを試した後これを修正する方法を考え出した!
何らかの理由で私のtableviewのcontentOffsetは-20の 'y'を持っていたので、私のtableviewを設定するときに気付きました:Swift 3/4
tableView.contentOffset = .zero
Objective-C
self.tableView.contentOffset = CGPointMake(0, 44);
Swift 4回答...
インターフェイスビューでTable Viewが選択され、属性インスペクターで「グループ化」スタイルが選択されている場合、View Controllerに次のコードを入力して余分なヘッダースペースの問題を修正します。
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return CGFloat.leastNonzeroMagnitude
}
Swiftを使うこれを試して:
func tableView(_ tableView: UITableView, viewForHeaderInSection
section: Int) -> UIView? {
return nil
}
iOS 7では、navBarの下ではなく、画面の最初の部分を表示します。それをur navbarの一番下に設定するのは簡単です。解決策は _ this _ answerで確認してください。同じ質問ではありませんが、自分の質問と非常に関連があります。
答えも回避策も役に立たなかった。ほとんどがtableView自体を扱っていました。私にとって問題の原因は、tableViewまたはcollectionViewを追加するビューでした。これは私のためにそれを修正したものです:
Swift 5
edgesForExtendedLayout = []
それをviewDidLoadに入れると、迷惑なギャップがなくなりました。お役に立てれば。
それをするもう一つの方法... ... それはどんな高さの値もハードコーディングするのを避けているので私はそれが好きです 。
UITableViewStyleGrouped
テーブル(静的または動的)では、tableView(_:heightForHeaderInSection)
に目的の高さを割り当てるだけです。セクションヘッダーラベルの下の余白に基づいて新しい高さを計算しています。
override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
var height = UITableViewAutomaticDimension
if section == 0, let header = tableView.headerViewForSection(section) {
if let label = header.textLabel {
// get padding below label
let bottomPadding = header.frame.height - label.frame.Origin.y - label.frame.height
// use it as top padding
height = label.frame.height + (2 * bottomPadding)
}
}
return height
}
IOS 9、Xcode 7.3でテスト済み。
それが役に立てば幸い。
このコードは私のために働きました、私にとって最良の答えはobjective-C
の上側に書かれていたので、私はそれをSwiftに変換しました。
Swift 4.0以降の場合
self.tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: self.tableView.bounds.size.width, height: 0.01))
これをviewDidLoad()
に書くだけで、チャンピオンのように動作します。
前の答えのどれも私のために働きませんでした。 Table View
に動的にヘッダを追加した後のパディングがNavigation Bar
からDocument Outline
を選択し、Translucent
ボックスを再チェックすることになっていました(それを半透明にするように強制していると答えているのとは反対) 。赤が少しオレンジ色に見えるため、以前はチェックを外していましたが、Table View
がこのシーンの唯一の要素であるため、シーンの要素を並べ替えるという解決策を試すことはできませんでした。この解決法はNavigation Bar
の色の上に半透明の層があることで大丈夫である限り有効です。お役に立てれば :)
私にとっては、すべての解決策を試してみましたが、UITableViewセクションの高さを設定することを考えていましたが、これはうまくいきました( Swift を使用)。
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 0.001
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 0.0
}
これは私のために働きました。また、セクションに基づいてヘッダーの高さを指定することもできます。