Изменение цвета фона UIAlertView?

Должно работать что-то вроде следующего:

Sub SplitDateTime()
Dim dDate As Date
Dim dTime As Date
Dim x As Integer

MsgBox "Split Date Time"
For x = 2 To 21
    'Sets the date in the cell of the first column
    dDate = Cells(x, 2)
    With Cells(x, 2)
        .Value = Int(dDate)
        .NumberFormat = "dd/mm/yy"
    End With

    'Sets the time in the cell of the second column
    With Cells(x, 3)
        .Value = dDate - Int(dDate)
        .NumberFormat = "hh:mm"
    End With
Next x
End Sub
38
задан Casebash 21 March 2010 в 10:31
поделиться

6 ответов

Я не полагаю, что существует представленный метод или свойство для того, чтобы сделать это. Установка backgroundColor UIAlertView (как UIView) просто помещает цветной прямоугольный фон позади аварийного представления.

я сказал бы, что это будет, вероятно, идти вразрез с единым интерфейсом iPhone для изменения этого цвета, таким образом, я не буду думать, что это рекомендовало поведение (таким же образом, что изменение цвета фона аварийного представления в Mac OS X не рекомендуется).

-3
ответ дан Brad Larson 27 November 2019 в 03:32
поделиться

Это не что-то, что возможно.

Любой необходимо создать собственное представление аварийного типа (включая обеспечение анимации, и т.д.) или использовать UIAlertView по умолчанию, предоставленный Apple.

Apple склонна не представлять вещи как цвет UIAlertView так, чтобы UI имел общее чувство через все приложения. Изменение цвета от приложения до приложения сбивало бы с толку пользователя.

3
ответ дан August 27 November 2019 в 03:32
поделиться

Фон AlertView - изображение И вы можете изменить это изображение

UIAlertView *theAlert = [[[UIAlertView alloc] initWithTitle:@"Atention"
   message: @"YOUR MESSAGE HERE", nil)
   delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease];

   [theAlert show];

   UILabel *theTitle = [theAlert valueForKey:@"_titleLabel"];
   [theTitle setTextColor:[UIColor redColor]];

   UILabel *theBody = [theAlert valueForKey:@"_bodyTextLabel"];
   [theBody setTextColor:[UIColor blueColor]];

   UIImage *theImage = [UIImage imageNamed:@"Background.png"];    
   theImage = [theImage stretchableImageWithLeftCapWidth:16 topCapHeight:16];
   CGSize theSize = [theAlert frame].size;

   UIGraphicsBeginImageContext(theSize);    
   [theImage drawInRect:CGRectMake(0, 0, theSize.width, theSize.height)];    
   theImage = UIGraphicsGetImageFromCurrentImageContext();    
   UIGraphicsEndImageContext();

   [[theAlert layer] setContents:[theImage CGImage]];
34
ответ дан 27 November 2019 в 03:32
поделиться

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

- (void)willPresentAlertView:(UIAlertView *)alertView;

так что ... просто скопируйте и вставьте

- (void)willPresentAlertView:(UIAlertView *)alertView 
{
    blah blah blah...
    [[alertView layer] setContents:(id)theImage.CGImage];  // to avoid the warning
}
13
ответ дан 27 November 2019 в 03:32
поделиться

Добавьте фреймворк QuartzCore в приложение и включите #import "QuartzCore / CALayer.h" в исходный файл.

2
ответ дан 27 November 2019 в 03:32
поделиться

Недавно мне это понадобилось, и в итоге я создал подкласс UIAlertView. Вот код для всех, кому интересно.

http://kwigbo.com/post/318396305/iphone-sdk-custom-uialertview-background-color

10
ответ дан 27 November 2019 в 03:32
поделиться