32

アプリをiOS7に移植しようとしていますが、私のカスタムは:(TableViewControllerの下の最後の行 (セル) を表示していますTabBar

私はそれをたくさん探していますが、解決策が見つかりません。誰でも私を助けることができますか?

私のカスタム テーブル ビュー クラス

エラーはブロースクリーンショットに表示されています (タブバーの下に非表示の製品を表示するために上にドラッグしているため、最後の製品の一部のみが表示されています):

スクリーンショット

ありがとう。

4

16 に答える 16

35

私は同じ問題を抱えており、ストーリーボードを使用して解決しました。Tab Bar Controller で、アトリビュート インスペクター、Simulated Metrics に移動し、Bottom Bar を Opaque Tab Bar に設定します。それでおしまい!説明については、下の画像を参照してください。 ここに画像の説明を入力

サウダソン!(こんにちは!)

于 2013-10-08T12:32:04.867 に答える
31

あなたの質問への回答は、dariaa が回答した別の投稿で見つけました。

Tab Bar が iOS7 の TableView セルをカバー

それは私にとってうまくいきました。

私はそれを解決した元の人ではないので、私の功績を認めないでください。

カスタム TableViewController で、[super viewDidLoad] の下に次の 2 行を追加します。

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.edgesForExtendedLayout = UIRectEdgeAll;
    self.tableView.contentInset = UIEdgeInsetsMake(0., 0., CGRectGetHeight(self.tabBarController.tabBar.frame), 0); 
} 
于 2013-10-24T22:16:27.230 に答える
10

友よ、私がこれにどれだけ苦労したかは言い表せません。ストーリー ボードの再構成が 1 回も役に立たなかったわけではありません。この問題は元の投稿とまったく同じで、次を使用して修正できました。

スイフト3用

self.edgesForExtendedLayout = []

目的 c の場合

self.edgesForExtendedLayout = NO;
于 2017-02-12T18:44:05.820 に答える
8

2行で終わりviewDidLoadです!

self.edgesForExtendedLayout = UIRectEdgeAll;
self.tableview.contentInset = UIEdgeInsetsMake(0.0f, 0.0f, CGRectGetHeight(self.tabBarController.tabBar.frame), 0.0f);
于 2014-10-28T23:44:04.063 に答える
6

iOS 7 では、viewController はフルハイトを使用します。として紹介されている物件があります。

self.automaticallyAdjustsScrollViewInsets = NO;

いいえに設定します。次に、 UIEdgeInset がその直後に設定されていない場合は、確認または設定します。

UIEdgeInsetsMake(top, left, bottom, right)

ここを参照して ください https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/AppearanceCustomization.html

編集:これも試してください

self.edgesForExtendedLayout = UIRectEdgeNone;
于 2013-10-04T05:24:00.483 に答える
5

この問題の根本的な原因は、VC のビュー階層の最初のスクロール ビューでのみ有効でautomaticallyAdjustsScrollViewInsetsあることです。Apple によって文書化されていませんが、UITableViewController を使用していない限り、変更が必要なスクロール ビューを VC が検出する唯一の方法です。

インセットを手動で調整せずに問題を解決するには、次のようにします。

  1. 「スクロール ビューのインセットを調整する」がチェックされていることを確認します。
  2. tableView がビュー階層の最初のサブビューであることを確認してください。(他のすべての要素の上に移動します)
于 2015-09-08T11:31:25.820 に答える
1

UINavigationControllerどちらにUITabBarControllerも、プログラムまたはストーリーボードで設定できる透明度フラグがあります。

には、コンテンツが上部バーまたは下部バーの下に拡張されるかどうかを制御する 2 つのUINavigationControllerフラグもあります。ここでも、プログラムまたはストーリーボードで設定できます。これはすべてのサブビューに適用されます。

それぞれUIViewControllerがコードで独自の設定を設定できます。プロパティが呼び出されedgesForExtendedLayout、すべての組み合わせを設定できます。

これらのプロパティを使用すると、AutoLayout と Springs'n'Struts は、デバイスに関係なく、必要な方法でビューを調整できます。

UIViewControllerあなたが見たいと思う新しいプロパティがたくさんあります。

于 2013-10-05T05:58:19.737 に答える
1

私は同じ問題を抱えています。これに対する 1 つの解決策は、ツールバーを半透明にしないことです。方法は次のとおりです。

お役に立てれば。

ありがとう。

于 2016-09-09T21:57:03.790 に答える
1

次のことを試してください。

 if ([self respondsToSelector:@selector(edgesForExtendedLayout)])

 self.edgesForExtendedLayout = UIRectEdgeBottom;
于 2015-10-14T05:08:49.177 に答える
0

そのため、この回答を投稿して、この回答が可能な解決策であるかどうかを教えてください。

私の場合、半透明効果が気に入っているので、テーブルにフッターを追加し、scrollIndicators を変更しました。

- (void)viewDidLoad
{
    // Do any additional setup after loading the view.
    [super viewDidLoad];
    UIView *footer = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.agendaItemsTable.frame.size.width, self.tabBarController.tabBar.frame.size.height)];
    self.agendaItemsTable.tableFooterView = footer;
    self.agendaItemsTable.scrollIndicatorInsets = UIEdgeInsetsMake(0, 0, self.tabBarController.tabBar.frame.size.height, 0);

}

どう思いますか?

于 2013-10-18T15:14:38.267 に答える
0

BaseTableViewController を UIViewController から UITableViewController に継承するように変更して、問題を解決しました。

しかし、UIViewController内でTableViewを使用しても解決されません:(

ありがとう。

于 2013-10-05T13:24:27.813 に答える
0

私は同じ問題を抱えていましたが、賛成票を投じた回答では解決しませんでした。同様の質問に対する私の回答を参照してください。 Tab Bar は iOS7 の TableView セルをカバーしています

テーブルビューコントローラーのメソッドでテーブルビューのフレームをviewWillAppear:画面の高さ(ステータスバーの高さ+ナビゲーションバーの高さ+タブバーの高さ)に手動で設定することで問題を解決しました。

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    // Adjust height of tableview (does not resize correctly in iOS 7)
    CGRect tableViewFrame = self.tableView.frame;
    tableViewFrame.size.height = [self heightForTableView];
    self.tableView.frame = tableViewFrame;
}

- (CGFloat)heightForTableView
{
    return CGRectGetHeight([[UIScreen mainScreen] bounds]) -
           (CGRectGetHeight([[UIApplication sharedApplication] statusBarFrame]) +
            CGRectGetHeight(self.navigationController.navigationBar.frame) +
            CGRectGetHeight(self.tabBarController.tabBar.frame));
}

誰かがこの問題のより良い解決策を見つけたら、共有してください!

于 2014-02-19T02:50:17.750 に答える
0

半透明効果が必要な xarly のような人、およびAutolayoutソリューション (フレームを設定しない) については、こちらの私の回答を参照してください https://stackoverflow.com/a/26419986/1158074

于 2014-10-17T07:52:33.263 に答える