IOS: пользовательский UIAlertView не работает нормально

#ios #xcode #uialertview

#iOS #xcode #uialertview

Вопрос:

по этой ссылке

http://joris.kluivers.nl/iphone-dev/?p=CustomAlert

существует образец пользовательского представления оповещений, но он не работает нормально, потому что он имеет свой классический вид AlertView. В этой ссылке написано, что: Для изменения внешнего вида по умолчанию на наше собственное фоновое изображение drawRect: необходимо переопределить. Мы не вызываем метод super drawRect, чтобы запретить UIAlertView отображать внешний вид по умолчанию. Все, что мы делаем, это рисуем наше фоновое изображение.

 - (void) drawRect:(CGRect)rect {
// do not call the super drawRect

CGSize imageSize = self.backgroundImage.size;
[self.backgroundImage drawInRect:CGRectMake(0, 0, imageSize.width, imageSize.height)];
}
  

но это пока не работает.

Ответ №1:

Я бы не стал пытаться сделать что-то подобное, используя UIAlertView.

Я бы создал пользовательский UIView и добавил его в ваше представление, когда вы хотите отобразить сообщение.

Ответ №2:

Используйте этот пользовательский класс для создания настраиваемого представления оповещений без каких-либо проблем.

Создайте класс с его заголовочным файлом и вставьте код из приведенного выше URL-адреса в каждый из .m .h файлов и . Импортируйте их в свой проект, а затем импортируйте файл заголовка в класс, для которого вы просматриваете оповещения.

 #import "ProAlertView.h"
  

а затем вызывайте его везде, где вам нужно. Это метод, который я использовал для вызова настраиваемого представления предупреждений:

 - (void)processHasErrors
{
//Due to internet connection or server error.
ProAlertView *alert = [[ProAlertView alloc] initWithTitle:NO_CONNECTION_ALERT_TITLE message: NO_CONNECTION_ALERT_MESSAGE delegate:self cancelButtonTitle:NO_CONNECTION_ALERT_VIEW_DISMISS_BUTTON otherButtonTitles:nil];

[alert setBackgroundColor:[UIColor colorWithRed:0.07 green:0.19 blue:0.35 alpha:0.8] withStrokeColor: 
 [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1]];


[alert show];
[activityIndicator stopAnimating];
}