Вопрос по uialertview, sdk, objective-c, ios – Как сделать несколько строк, выровненных по левому краю UIAlertView?

18

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

line 1 line 2 line 3

Вот что я имею до сих пор:

alert = [[UIAlertView alloc] initWithTitle: @"How to use buttons"
                                   message: @"line 1. line 2, line 3 "
                                  delegate: nil
                         cancelButtonTitle: @"OK"
                         otherButtonTitles: nil];

Я также хочу изменить цвет представления предупреждений на красный.

Ваш Ответ

5   ответов
4

для выравнивания влево:

 NSArray *subviewArray = alert.subviews;
for(int x = 0; x < [subviewArray count]; x++){

    if([[[subviewArray objectAtIndex:x] class] isSubclassOfClass:[UILabel class]]) {
        UILabel *label = [subviewArray objectAtIndex:x];
        label.textAlignment = UITextAlignmentLeft;
    }

Чтобы показать красный фон за предупреждением:

alert.backgroundColor=[UIColor redColor];
Теперь это не сработает. Любое другое решение?
Взято из кода qegals и скорректировано. @ DavidNg Могу ли я попросить вас принять его ответ и, возможно, плюс один человек, который помог вам здесь
1

Вы можете создать новую строку, вставив\n в ваше сообщение. Например:

@"line 1.\nline 2,\nline 3"
2

Убедитесь, что вы используете \, а не обычный /.

alt + shift + 7 (на моей клавиатуре)

\ п

Это должно сделать это. :-)

31

Пули представлены кодом Unicode 0x2022. Я заставил его работать так, используя & quot; \ n & quot; для новых строк:

UIAlertView *alert = [[UIAlertView alloc]
            initWithTitle: @"How to use buttons"
            message: [NSString stringWithFormat: @"%C line 1.\n %C line 2,\n %C line 3", (unichar) 0x2022, (unichar) 0x2022, (unichar) 0x2022];
            delegate: nil
            cancelButtonTitle:@"OK"
            otherButtonTitles:nil];

Это должно работать на пули.

Для выравнивания по левому краю сделайте это:

NSArray *subViewArray = alertView.subviews;
for(int x = 0; x < [subViewArray count]; x++){

    //If the current subview is a UILabel...
    if([[[subViewArray objectAtIndex:x] class] isSubclassOfClass:[UILabel class]]) {
        UILabel *label = [subViewArray objectAtIndex:x];
        label.textAlignment = NSTextAlignmentLeft;
    }
}

Итак, в заключение:

  • "\n" for displaying new lines.
  • [NSString stringWithFormat:@"%C Line n", (unichar) 0x2022]; for the bullets.
  • For the alignment, iterate through the subviews of the alert view and identify which subviews are subclasses of UILabel. Then change the text alignment of the labels to left alignment using label.textAlignment = NSTextAlignmentLeft.
  • After you do all this, then you can call [alert show];.
Получите один плюс от меня за ваш подробный ответ
спасибо, как насчет списка бюллетеней и выравнивания по левому краю? DavidNg
привет, теперь центр выровнен Я хочу, чтобы выровнялся с бюллетенями. Если у вас есть более длинные тексты, вы увидите, что они выровнены по центру DavidNg
@pasawaya Код для выравнивания по левому краю не работает. Прежде всего, я предполагаю, что вы имели в виду NSArray * subViewArray = alert.subviews; потому что alertView.subviews не существует. Во-вторых, когда я размещаю этот код после инициализации оповещения, subViewArray имеет нулевые объекты. Я что-то пропустил?
Кроме того, при выполнении маркеров необходимо ввести шестнадцатеричный код, чтобы Xcode не отображал предупреждение:[NSString stringWithFormat:@"%C Line n", (unichar) 0x2022]
1

Для новой строки и выравнивания текста предпочитают@qegal's ответьте, что это идеально, но если вы хотите изменить цвет или настроить представление предупреждений, я выбрал один отличный класс вместо представления предупреждений системы, просто проверьтеэтот это определенно работает. даже это также поможет вам получить многострочное сообщение с выравниванием и маркированным списком.

Если вы обнаружили какие-либо проблемы с его использованием, обратитесь за помощью, я обязательно помогу вам.

Удачного кодирования :)

Похожие вопросы