私が持っているすべてのビューに表示する必要があるカスタムメニューがある新しいプロジェクトを開始しようとしています。このメニューはカスタム設計されており、ある時点でアニメーションが追加される可能性があるため、タブバーを使用したくありません.
すべての xib ファイルにビルドする必要がないように、このメニューを 1 か所に作成する簡単な方法はありますか??
ありがとう
私が持っているすべてのビューに表示する必要があるカスタムメニューがある新しいプロジェクトを開始しようとしています。このメニューはカスタム設計されており、ある時点でアニメーションが追加される可能性があるため、タブバーを使用したくありません.
すべての xib ファイルにビルドする必要がないように、このメニューを 1 か所に作成する簡単な方法はありますか??
ありがとう
タブ バー コントローラーは、システム提供のコンテナー コントローラーです。iOS 5 以降を使用している場合は、独自のカスタム コンテナー ビュー コントローラーを作成できます。
ビュー コントローラー プログラミング ガイドのカスタム コンテナー ビュー コントローラーの説明を参照してください。
必要な主要なメソッドは、UIViewController クラス リファレンスにも列挙されています。
WWDC 2011 #102 - Implementing UIViewController Containmentもチェックすることをお勧めします。
アップデート:
独自のカスタム メニューを作成する場合は、次のようにします。特別なことはしていませんが、カスタム ボタンに対応する 3 つの色付きのサブビューを追加しているだけです。そして、それぞれにタップ ジェスチャ レコグナイザがあります。
NSInteger const kHeight = 50;
NSInteger const kCount = 3;
@interface CustomMenu ()
@property (nonatomic, strong) NSMutableArray *menuViews;
@end
@implementation CustomMenu
- (id)init
{
self = [super init];
if (self)
{
_menuViews = [[NSMutableArray alloc] init];
for (NSInteger i = 0; i < kCount; i++)
{
UIView *subview = [[UIView alloc] init];
subview.tag = i;
[self addSubview:subview];
[_menuViews addObject:subview];
UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[subview addGestureRecognizer:recognizer];
}
[_menuViews[0] setBackgroundColor:[UIColor blueColor]];
[_menuViews[1] setBackgroundColor:[UIColor redColor]];
[_menuViews[2] setBackgroundColor:[UIColor greenColor]];
}
return self;
}
- (void)layoutSubviews
{
CGFloat width = self.superview.bounds.size.width;
CGFloat height = self.superview.bounds.size.height;
CGFloat menuChoiceWidth = width / kCount;
self.frame = CGRectMake(0, height - kHeight, width, kHeight);
NSInteger subviewIndex = 0;
for (UIView *subview in self.menuViews)
{
subview.frame = CGRectMake(subviewIndex * menuChoiceWidth, 0,
menuChoiceWidth, kHeight);
subviewIndex++;
}
}
- (void)handleTap:(UITapGestureRecognizer *)recognizer
{
NSLog(@"%s tapped on %d", __FUNCTION__, recognizer.view.tag);
}
@end
次に、さまざまなビュー コントローラーでビューに を追加する必要がCustomMenu
あります。
@interface ViewController ()
@property (nonatomic, strong) CustomMenu *menu;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.menu = [[CustomMenu alloc] init];
[self.view addSubview:self.menu];
}
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
[self.menu layoutSubviews];
}
@end
私は iOS 4.3 のサポートを断念したことを告白します (心痛に値するものではなく、最近の 4.3 の聴衆のサイズはかなり小さいです)。考えられる解決策の 1 つがどのようなものかを感じ取ってください。