Взгляните в это
[[UIBarButtonItem alloc] initWithCustomView:yourCustomView];
По существу, каждый объект должен быть "кнопкой", но они можно инстанцировать с любым представлением, которого Вы требуете. Вот некоторый пример кода. Отметьте, так как другие кнопки обычно находятся на панели инструментов, распорные детали помещаются в каждую сторону кнопки заголовка, таким образом, это остается в центре.
NSMutableArray *items = [[self.toolbar items] mutableCopy];
UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[items addObject:spacer];
[spacer release];
self.titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0.0 , 11.0f, self.view.frame.size.width, 21.0f)];
[self.titleLabel setFont:[UIFont fontWithName:@"Helvetica-Bold" size:18]];
[self.titleLabel setBackgroundColor:[UIColor clearColor]];
[self.titleLabel setTextColor:[UIColor colorWithRed:157.0/255.0 green:157.0/255.0 blue:157.0/255.0 alpha:1.0]];
[self.titleLabel setText:@"Title"];
[self.titleLabel setTextAlignment:NSTextAlignmentCenter];
UIBarButtonItem *spacer2 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[items addObject:spacer2];
[spacer2 release];
UIBarButtonItem *title = [[UIBarButtonItem alloc] initWithCustomView:self.titleLabel];
[items addObject:title];
[title release];
[self.toolbar setItems:items animated:YES];
[items release];
Одна из вещей, для которых я использую этот прием, состоит в том, чтобы инстанцировать UIActivityIndicatorView
сверху эти UIToolBar
, что-то, что иначе не было бы возможно. Например, здесь я имею UIToolBar
с 2 UIBarButtonItem
, FlexibleSpaceBarButtonItem
, и затем другой UIBarButtonItem
. Я хочу вставить UIActivityIndicatorView
в UIToolBar
между гибким пространством и заключительной (правой) кнопкой. Таким образом в моем RootViewController
я делаю следующее,
- (void)viewDidLoad {
[super viewDidLoad];// Add an invisible UIActivityViewIndicator to the toolbar
UIToolbar *toolbar = (UIToolbar *)[self.view viewWithTag:767];
NSArray *items = [toolbar items];
activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 20.0f, 20.0f)];
[activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhite];
NSArray *newItems = [NSArray arrayWithObjects:[items objectAtIndex:0],[items objectAtIndex:1],[items objectAtIndex:2],
[[UIBarButtonItem alloc] initWithCustomView:activityIndicator], [items objectAtIndex:3],nil];
[toolbar setItems:newItems];}