アプリをiOS7
に移植しようとしていますが、私のカスタムは:(TableViewController
の下の最後の行 (セル) を表示していますTabBar
私はそれをたくさん探していますが、解決策が見つかりません。誰でも私を助けることができますか?
エラーはブロースクリーンショットに表示されています (タブバーの下に非表示の製品を表示するために上にドラッグしているため、最後の製品の一部のみが表示されています):
ありがとう。
アプリをiOS7
に移植しようとしていますが、私のカスタムは:(TableViewController
の下の最後の行 (セル) を表示していますTabBar
私はそれをたくさん探していますが、解決策が見つかりません。誰でも私を助けることができますか?
エラーはブロースクリーンショットに表示されています (タブバーの下に非表示の製品を表示するために上にドラッグしているため、最後の製品の一部のみが表示されています):
ありがとう。
私は同じ問題を抱えており、ストーリーボードを使用して解決しました。Tab Bar Controller で、アトリビュート インスペクター、Simulated Metrics に移動し、Bottom Bar を Opaque Tab Bar に設定します。それでおしまい!説明については、下の画像を参照してください。
サウダソン!(こんにちは!)
あなたの質問への回答は、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);
}
友よ、私がこれにどれだけ苦労したかは言い表せません。ストーリー ボードの再構成が 1 回も役に立たなかったわけではありません。この問題は元の投稿とまったく同じで、次を使用して修正できました。
スイフト3用
self.edgesForExtendedLayout = []
目的 c の場合
self.edgesForExtendedLayout = NO;
2行で終わりviewDidLoad
です!
self.edgesForExtendedLayout = UIRectEdgeAll;
self.tableview.contentInset = UIEdgeInsetsMake(0.0f, 0.0f, CGRectGetHeight(self.tabBarController.tabBar.frame), 0.0f);
iOS 7 では、viewController はフルハイトを使用します。として紹介されている物件があります。
self.automaticallyAdjustsScrollViewInsets = NO;
いいえに設定します。次に、 UIEdgeInset がその直後に設定されていない場合は、確認または設定します。
UIEdgeInsetsMake(top, left, bottom, right)
編集:これも試してください
self.edgesForExtendedLayout = UIRectEdgeNone;
この問題の根本的な原因は、VC のビュー階層の最初のスクロール ビューでのみ有効でautomaticallyAdjustsScrollViewInsets
あることです。Apple によって文書化されていませんが、UITableViewController を使用していない限り、変更が必要なスクロール ビューを VC が検出する唯一の方法です。
インセットを手動で調整せずに問題を解決するには、次のようにします。
UINavigationController
どちらにUITabBarController
も、プログラムまたはストーリーボードで設定できる透明度フラグがあります。
には、コンテンツが上部バーまたは下部バーの下に拡張されるかどうかを制御する 2 つのUINavigationController
フラグもあります。ここでも、プログラムまたはストーリーボードで設定できます。これはすべてのサブビューに適用されます。
それぞれUIViewController
がコードで独自の設定を設定できます。プロパティが呼び出されedgesForExtendedLayout
、すべての組み合わせを設定できます。
これらのプロパティを使用すると、AutoLayout と Springs'n'Struts は、デバイスに関係なく、必要な方法でビューを調整できます。
UIViewController
あなたが見たいと思う新しいプロパティがたくさんあります。
次のことを試してください。
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout = UIRectEdgeBottom;
そのため、この回答を投稿して、この回答が可能な解決策であるかどうかを教えてください。
私の場合、半透明効果が気に入っているので、テーブルにフッターを追加し、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);
}
どう思いますか?
BaseTableViewController を UIViewController から UITableViewController に継承するように変更して、問題を解決しました。
しかし、UIViewController内でTableViewを使用しても解決されません:(
ありがとう。
私は同じ問題を抱えていましたが、賛成票を投じた回答では解決しませんでした。同様の質問に対する私の回答を参照してください。 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));
}
誰かがこの問題のより良い解決策を見つけたら、共有してください!
半透明効果が必要な xarly のような人、およびAutolayoutソリューション (フレームを設定しない) については、こちらの私の回答を参照してください https://stackoverflow.com/a/26419986/1158074