Как я могу создать пользовательский UIToolbar-подобный компонент в UITableViewController? - PullRequest
0 голосов
/ 22 марта 2010

У меня есть UITableViewController.Я хочу компонент "панель инструментов" внизу.

Я начал с использования фонового изображения и кнопки.В конструкторе интерфейсов я добавил их внизу экрана iPhone.Проблема, с которой я столкнулся, заключалась в том, что фоновое изображение и кнопка прокручивались вместе со столом.Мне, очевидно, нужно это исправить в нижней части.

Не найдя слишком большого направления в Интернете, я решил настроить панель UIToolbar, чтобы она выглядела так, как я хочу, поскольку положение по умолчанию фиксировано.В моем initWithNibName для моего UITableViewController у меня есть:

UIImage *shuffleButtonImage = [UIImage imageNamed:@"shuffle_button.png"];
        NSArray* toolbarItems = [NSArray arrayWithObjects:
                                 [[UIBarButtonItem alloc]   initWithImage:shuffleButtonImage  
                                                            style:UIBarButtonItemStylePlain
                                                            target:self
                                                            action:@selector(push:)],
                                 nil];
        [toolbarItems makeObjectsPerformSelector:@selector(release)];
        self.toolbarItems = toolbarItems;

Проблема, с которой я сейчас сталкиваюсь, заключается в том, что shuffleButtonImage не отображается должным образом.Форма кнопки отображается отлично, но она окрашена в белый цвет и, следовательно, не похожа на изображение.

Кто-нибудь знает, почему вместо реального изображения будет отображаться «белое изображение»?

Также звучит как хорошая идея настроить панель UIToolbar или есть простой способ обеспечить фиксированную позицию компонента "toolbar-ish".

Повторюсь - мой компонент "toolbar-ish" нуждается только вбыть одной кнопкой на кнопке моего UITableView.Одиночная кнопка имеет градиентный цветной фон, который я создаю вместе с изображением.

Ответы [ 2 ]

1 голос
/ 26 марта 2010

Из описания параметра "image" в документации для initWithImage: style: target: action: метод класса UIBarButtonItem:

Изображения, отображаемые на панели, получены из этого изображения. Если это изображение слишком велико, чтобы поместиться на панели, оно масштабируется, чтобы соответствовать. Как правило, размер панели инструментов и изображения панели навигации составляет 20 х 20 точек. Альфа-значения в исходном изображении используются для создания изображений - непрозрачные значения игнорируются.

По сути, изображение, которое вы предоставляете, используется в качестве маски для создания контура / тени для фактического изображения кнопки. Я не верю, что вы можете изменить это поведение для UIBarButtonItem.

В качестве альтернативы вы можете создать UIButton (с вашим цветным изображением), а затем установить его в качестве пользовательского представления для вашего UIBarButtonItem, как предлагается здесь . Если вы идете по этому пути, может также потребоваться установка границ UIButton в соответствии с границами UIBarButtonItem (см. это обсуждение).

0 голосов
/ 23 марта 2010

Ваше изображение может отображаться пустым, потому что оно не найдено в ваших ресурсах. Поставьте точку останова после определения shuffleButtonImage и убедитесь, что оно не равно нулю.

...