UIImage для кнопки UIActionSheet? - PullRequest
       1

UIImage для кнопки UIActionSheet?

3 голосов
/ 16 октября 2011

Я знаю, что UIActionSheets не предлагает такой большой настройки, но я спрашиваю: можно ли использовать вместо серой / белой кнопки зеленую кнопку (мой собственный UIImage)?Я могу снабдить свое собственное изображение уже текстом, который я хочу;поэтому, используя обычный UIActionSheet, могу ли я добавить собственное изображение на одну из кнопок?Если так, как я должен продолжать делать это?

Спасибо, OZ

Ответы [ 2 ]

2 голосов
/ 16 октября 2011

@ huesforalice правильно - самый простой способ - создать собственную замену UIActionSheet.В основном у вас есть 3 варианта:

  1. Реальная замена: вы создаете подкласс UIActionSheet для совместимости с протоколом с «UIActionSheetDelegate».Это позволит вам использовать его именно как UIActionSheet - но это может быть дорогостоящим процессом, чтобы выяснить, когда и почему UIActionSheet будет вызывать реализацию метода делегатов.

  2. Даже немногодалее, а также расширить протокол.Это даст вам больше возможностей, как его использовать (т. Е. Разрешить использовать сборщик с помощью новых методов протокола), но будет еще сложнее.

  3. Самым простым способом будет созданиеочень собственная реализация, которая не зависит ни от UIActionSheet, ни от ее протокола - но она не заменит настоящую UIActionSheet в том смысле, что вы не можете поместить ее в свой проект и ожидать, что она будет работать.Но у вас будет высшая степень свободы.

Я бы порекомендовал 3. Я нашел проект, который работает так же .Но имейте в виду: он показывает вам, как это сделать в целом, но имеет некоторые плохие базовые проектные решения:

  • Он использует метод

    - (void) addButtonWithTitle: (NSString*) buttonTitle buttonId: (NSInteger) buttonId textColor: (UIColor*) textColor textShadowColor: (UIColor*) textShadowColor backgroundColor: (UIColor*) buttonBackgroundColor increasedSpacing: (BOOL) spacing 
    

    Вместо -ИМХО - это должно быть

    - (void) addButton: (UIButton*) button;
    

    Таким образом, вы можете добавить кнопки с различными дизайнами, более гибкими, и не зависят от идентификатора раздела, что совершенно не нужно, так как объект имеет свою собственную идентичность как объектуже.

  • Метод [actionSheet showWithAnimation:YES]; должен называться show или showAnimated:, поскольку …withAnimation: обычно принимает блок для выполнения пользовательской анимации.

2 голосов
/ 16 октября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...