Разрешить UIBarButtonItem касаться верхней и нижней части UINavigationBar - PullRequest
8 голосов
/ 15 июня 2011

Взгляните на приложение Droplr для iPhone:

enter image description here

Обратите внимание, как UIBarButtonItem s могут касаться правой, левой, верхней и нижней частей экрана/Панель навигации?

Как мне добиться чего-то подобного?Вот как я делаю образец UIBarButton и устанавливаю его для нужного элемента:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:image forState:UIControlStateNormal];    
button.frame= CGRectMake(0.0, 0.0, image.size.width, image.size.height);
[button addTarget:self action:action forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *bb = [[[UIBarButtonItem alloc] initWithCustomView:button]autorelease];
[self.navigationItem setRightBarButtonItem:bb animated:YES];

Однако, он не выровнен по правому краю и имеет небольшой запас сверхуниз.Размер моего изображения правильный (44 пикселя), и похоже, что он сжимает его, чтобы соответствовать размеру кадра.

Итак, как я могу это сделать?


Редактировать: К сожалению, верхний / нижний интервал был моей ошибкой.Тем не менее, я не могу понять, как выровнять кнопку панели заподлицо с левой / правой стороной.Вот что я имею в виду: (извините за уродливую кнопку, это был просто тест)

enter image description here

Я пытался установить вставки изображений, но, похоже, ничего не получалось.

1 Ответ

11 голосов
/ 15 июня 2011
UIView *rightview = [[UIView alloc] initWithFrame:CGRectMake(0,0,30,30)];



UIButton *searchbutton = [[UIButton alloc] initWithFrame:CGRectMake(2,2,50, 30)];
[searchbutton setImage:[UIImage imageNamed:@"some-pic.png"] forState: UIControlStateNormal];
[rightview addSubview:searchbutton];


UIBarButtonItem *customItem = [[UIBarButtonItem alloc] initWithCustomView:rightview];
self.navigationItem.rightBarButtonItem = customItem;
[customItem release];

Я использую customView для rightBarButtonItem и выравниваю его по правому краю. Просто попробуйте немного с CGRectMake-Numbers для x-координаты, для тестирования я добавил к большим числам ...

...