2011-01-21 3 views
0

В настоящее время я использую http://kwigbo.com/post/318396305/iphone-sdk-custom-uialertview-background-color для своего пользовательского UIAlertView. Все работает нормально, но я пытаюсь изменить цвета текста заголовка и текста, и я хотел бы изменить цвет кнопки. Есть какой-либо способ сделать это? Я пробовал использовать:Как изменить цвет текста UIAlertView?

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

но я не могу заставить его работать. Любая помощь будет оценена по достоинству. Благодарю.

ответ

0

Проверьте, не ли ли установлен setTextColor.

Я думал, что это был

theTitle.text.color = [UIColor redColor]; 

или вы могли бы использовать

[theTitle.text setColor:[UIColor redColor]]; 

Не совсем уверен, что на второй, то первый пример должен сделать трюк, хотя.

1

Вам нужно включить UIAlertViewDelegate в ваш файл .h и переопределить этот метод в файле .m.

-(void)willPresentAlertView:(UIAlertView *)alertView{ 
    UILabel *theTitle = [alertView valueForKey:@"_titleLabel"]; 
    theTitle.font = [UIFont fontWithName:@"Copperplate" size:18]; 
    [theTitle setTextColor:[UIColor whiteColor]]; 

    UILabel *theBody = [alertView valueForKey:@"_bodyTextLabel"]; 
    theBody.font = [UIFont fontWithName:@"Copperplate" size:15]; 
    [theBody setTextColor:[UIColor whiteColor]]; 
} 
+1

+1, но в ios 5.1 настройки _bodyTextLabel не работают для меня, возможно потому, что у меня есть длинный текст –

+1

Это плохое решение, а не будущее доказательство, поскольку оно использует частные переменные (обходным путем) –

0

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

-(void)customAlertTitle:(NSString*)title message:(NSString*)message{ 
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:nil delegate:nil cancelButtonTitle:@"NO" otherButtonTitles:@"YES", nil]; 
UIView *subView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 80)]; 

UILabel *titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 270, 50)]; 
titleLabel.text = title; 
titleLabel.font = [UIFont boldSystemFontOfSize:20]; 
titleLabel.numberOfLines = 2; 
titleLabel.textColor = [UIColor redColor]; 
titleLabel.textAlignment = NSTextAlignmentCenter; 

[subView addSubview:titleLabel]; 

UILabel *messageLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 30, 270, 50)]; 
messageLabel.text = message; 
messageLabel.font = [UIFont systemFontOfSize:18]; 
messageLabel.numberOfLines = 2; 
messageLabel.textColor = [UIColor redColor]; 
messageLabel.textAlignment = NSTextAlignmentCenter; 

[subView addSubview:messageLabel]; 

[alertView setValue:subView forKey:@"accessoryView"]; 
[alertView show]; 
} 

Приведенный выше код работает отлично на последнюю XCode 8.3.1. Прошу прокомментировать, если перед вами возникнут какие-либо проблемы.

Смежные вопросы