StackOverflow に関するいくつかの質問を検索した結果、カスタム UITabBar を作成するための主要なプロジェクトはBCTabBarController
. その説明には次のように書かれています。
標準の UITabBarController の使用には、次のようないくつかの問題があります。
特にランドスケープモードでは高すぎる
高さが UIToolbar と一致しません
プライベート API を使用しないとカスタマイズできない
それにもかかわらず、私はGitHub でこの奇妙なプロジェクトを見つけました。ここでは、各タブの実装で標準を使用するチュートリアルがあり、機能しています (奇妙なことに、機能します)。UITabBarController
UIButtons
タブの代わりにカスタムを作成するのが間違っているとしたら、どうなるのだろうと思っていましUITabBarController
た。UIButtons
これの実装は次のようになります。
- (void)viewDidAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self hideTabBar];
[self addCustomElements];
}
- (void)hideTabBar
{
for(UIView *view in self.view.subviews)
{
if([view isKindOfClass:[UITabBar class]])
{
view.hidden = YES;
break;
}
}
}
-(void)addCustomElements
{
// Initialise our two images
UIImage *btnImage = [UIImage imageNamed:@"NavBar_01.png"];
UIImage *btnImageSelected = [UIImage imageNamed:@"NavBar_01_s.png"];
self.btn1 = [UIButton buttonWithType:UIButtonTypeCustom]; //Setup the button
btn1.frame = CGRectMake(0, 430, 80, 50); // Set the frame (size and position) of the button)
[btn1 setBackgroundImage:btnImage forState:UIControlStateNormal]; // Set the image for the normal state of the button
[btn1 setBackgroundImage:btnImageSelected forState:UIControlStateSelected]; // Set the image for the selected state of the button
btn1.backgroundColor = [UIColor yellowColor];
[btn1 setTag:0]; // Assign the button a "tag" so when our "click" event is called we know which button was pressed.
[btn1 setSelected:true]; // Set this button as selected (we will select the others to false as we only want Tab 1 to be selected initially
私のプロジェクトでは、iOS 5.1 以降を使用し、ストーリーボードや XIB は使用しません。ありがとう!