2009-02-15 5 views
8

Кто-нибудь есть код, чтобы сделать это:Настройка UIAlertView

UIAlertViewHack http://booleanmagic.com/uploads/UIAlertViewHack.png

или еще лучше, 3x2 сетка кнопок с изображениями с помощью объекта UIAlertView?

Меня не интересует текстовое поле, это кнопки в сетке, которые я хочу (желательно с изображениями, а не с текстом).

ответ

27

Я думаю, что лучше всего забыть настраивать представление UIAlert и самостоятельно настраивать собственное представление.

Во-первых, то, что вы показываете, действительно не является «предупреждением», поэтому оно противоречит тому, для чего предназначен UIAlertView. Это означает, что вы меняете парадигму интерфейса пользователя, которая никогда не является хорошей идеей.

Во-вторых, было бы намного проще анимировать пользовательский вид на месте, чем пытаться взломать UIAlertView, чтобы заставить его делать то, что вы хотите.

+3

Не только это, но и попытка настроить UIAlertView - одна из вещей, которые могут привести к тому, что ваше приложение будет отклонено Apple довольно последовательно. –

4

Для этого нет встроенных компонентов. UIAlertView должен иметь только текст и кнопки в соответствии с документом HIG.

Вам нужно будет создать свой собственный вид и добавить к нему элементы управления. Пример HeadsUpUI в SDK показывает, как показать пользовательское представление в виде меню как оверлей.

Надеюсь, что это поможет.

11

Прежде всего вам нужно сделать окно предупреждения больше, чтобы разместить элементы управления, но оно должно быть размещено в центре.

Для этого вместо того, чтобы устанавливать размер кадра, текст сообщения с «\ n» s не указан. например:

alert = [[UIAlertView alloc] initWithTitle:@"Rate this picture." 
message:@"Tap a star to rate.\n\n\n\n " /*------ look at here!!----*/ 
delegate:self 
cancelButtonTitle:nil 
otherButtonTitles:nil]; 

Затем используйте UIAlertViewDelegate для предупреждения.

переопределить его, viewWillAppear: добавить свои кнопки и установить их рамки вручную в нужном положении.

ИЛИ: создать весь вид с контроллером вида, и добавить вид в окно предупреждения, как:

[myalertview addSubvew:mycomplexalert]; 

Надеется, что это придет в вашу помощь :)

Я использую предупреждение ящики для рейтинга ввода с изображениями звезд, твиттером, обратной связью и т.д. фбом

UPDATE iOS7:

Для прошивки 7, создать свой собственный вид с ком ненты и установить его в качестве вспомогательного зрения alertview в:

[alert setValue:imageView forKey:@"accessoryView"]; 

Св того простого :-)

+1

«\ n \ n \ n \ n» взлома не работает с текущей версией iOS 7 Beta 1! Я не уверен, будет ли это изменено в последнем iOS 7 .. – Raphael

+0

Для iOS 7 создайте свой собственный вид и установите его как вид аксессуара alertview: [alert setValue: imageView forKey: @ "accessoriesView"]; –

+0

Я думаю, что может быть причина, по которой «accesoryView» не является общедоступным. Так что это может сломаться в будущих версиях или может быть отклонено Apple. – Raphael

6

This tutorial охватывает как подкласс UIAlertView для достижения текстового поля ввода. В нем объясняется, как увеличить вид, добавить объекты (например, текстовые поля или изображения) и сделать преобразование для перемещения окна вверх на экране.

+0

Это не идет о том, как изменить размер представления, но полезно показать, как добавить текстовое поле и использовать введенные данные внутрь. – sasquatch

6

Я написал почти идеальную замену UIAlertView, которая также полностью настраивается.Посмотрите на CODialog, если это соответствует вашим потребностям.

+0

это замечательно @Erik Aigner .. однако я только что получил старый (iOS6) проект, который использует вашу библиотеку, и нам нужно перенести его на iOS7 .. ваша библиотека использует внешний вид iOS6 .. любая идея, как я могу ее обновить выглядеть/чувствовать себя как iOS 7? – abbood

+0

@abbood просто переопределяет методы рисования –

+0

@ugh man - это много строк кода. Знаете ли вы, что Apple примет приложение, в котором есть ваша библиотека, учитывая, что они будут принимать только код, который был скомпилирован против iOS 7? – abbood