2012-05-24 7 views
6

私は普通のUITabBarを使って、背景のイメージを高さの低いカスタムイメージに変更しましたので、frameheightを変更しました。 最初はタブバーの下に空白があります。私はframeoriginも変更しました。しかし、今の空白スペースは、タブバーの上まで移動しているとこれが結果です:カスタムUITabBarとViewControllerの間のスペース

space above tab bar

そして、これはAppDelegateでタブバー宣言するコードです:

self.tabContoller = [[UITabBarController alloc] init]; 
//customizing the tabbar 
UIImage * tabBackgroundImage = [UIImage imageNamed:@"tabBarBg.png"]; 
self.tabContoller.tabBar.backgroundColor = [UIColor colorWithRed:245.f/255.f green:245.f/255.f blue:245.f/255.f alpha:255.f/255.f]; 
self.tabContoller.tabBar.backgroundImage = tabBackgroundImage; 
//setting the tabbar height to the correct height of the image 
CGRect tabR = self.tabContoller.tabBar.frame; 
CGFloat diff = tabR.size.height - tabBackgroundImage.size.height; 
tabR.size.height = tabBackgroundImage.size.height; 
tabR.origin.y += diff; 
self.tabContoller.tabBar.frame = tabR; 

私は推測します問題は、ViewControllerが、通常のタブバーの高さである一定のスペースの上に描画されることです。それを変更する方法はありますか?

+0

viewcontrollerの 'view'の' height'を増やしてみてください。 xibを作成できない場合は、 'viewDidLoad'で手動で行います。 – Mat

+0

それは動作しません、私は 'viewWillAppear'と' viewDidAppear'でそれを設定しようとしました。それは効果がありません。 – Nadavrbn

答えて

7
は、フルサイズのフレームにあなたのUITabBarControllerのサブビューを変更

、これは私の仕事:

[[yourTabBarController.view.subviews objectAtIndex:0] setFrame:CGRectMake(0, 0, 320, 480)]; 
+0

あなたは命を救ってくれてありがとう! – Nadavrbn

+0

ありがとうございます! –

+0

これはiOS7では動作しません。余分なものが残っているようです。黒い矩形は消えますが、今は灰色の境界線がありました... – ryan0

0

上記の@JoaTのようなフレームを変更しても機能しない場合は、ビューコントローラのビューに正しい自動サイズ設定マスクが設定されていることを確認してください。

このSOリンクが役立つ場合があります。

+0

私は 'UIViewAutoresizingFlexibleHeight'と' UIViewAutoresizingFlexibleBottomMargin'を試しましたが、結果はありませんでした。 'self.tabContoller.tabBar.autoresizesSubviews = YES;'と 'self.tabContoller.view.autoresizesSubviews = YES;'というプロパティも設定しましたが、それは役に立ちませんでした。私はそれをどこにでも置くべきですか? – Nadavrbn

+0

最初のビューコントローラが表示された後、タブバーのフレームとバインドされたサイズを印刷しようとしましたか?アプリデリゲートに設定した後であるとは思わないかもしれません。 – Mike

0

タブバーの高さと原点を変更してみましたが、私にとっては正常に機能しました。ビューコントローラの高さを上げることで試すことができます。

7

はUITabBarから延びる独自のクラスを作成してみてください、この機能を使用します。

- (CGSize)sizeThatFits:(CGSize)size { 
    CGSize auxSize = size; 
    auxSize.height = 54; // Put here the new height you want and that's it 
    return auxSize; 
} 

これは、サイズが変更されますあなたが望むサイズにUITabBar。シンプルで簡単。

+0

私はこの答えを見つけるのにずっと時間がかかりました。それはもっと上向きにすべきだ。これは本当にUITabBarにファンキーなことをする最も簡単な方法です。ありがとうございました。 –

+0

それはあなたのためにうれしいです。どういたしまして。 – crisisGriega

+0

これは文字通り私がUITabBarでカスタム高さを得ることができた唯一の方法です。ありがとうございました。 –

関連する問題