Многострочный текст UIActionSheet/UIAlertController

Это код, который я пишу для отображения UIActionSheet.

actionSheet = [[UIActionSheet alloc] initWithTitle:NSLocalizedString(@"updateresponseforrecurring", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", nil) destructiveButtonTitle:nil otherButtonTitles:
                   NSLocalizedString(@"updateresponseonlyforthis", nil),
                   NSLocalizedString(@"updateresponseforallactivities", nil),
                   nil];
    actionSheet.tag = 2;
    [actionSheet showInView:[UIApplication sharedApplication].keyWindow];  

Вот что я получаю, используя это:

введите описание изображения здесь

Понятно, что второй вариант длиннее, и поэтому размер становится меньше, чтобы соответствовать ширине.
Но мне нужен одинаковый размер шрифта для всех параметров, что оставляет мне многострочный вариант. Также пробовал с UIAlertController, но не смог установить многострочный текст. Как этого добиться?


person Nitish    schedule 19.10.2015    source источник


Ответы (4)


Кажется, это работает в iOS 10 и Swift 3.1:

UILabel.appearance(whenContainedInInstancesOf: [UIAlertController.self]).numberOfLines = 2
person LenK    schedule 17.03.2017
comment
Вы также можете установить для numberOfLines значение 0. Это позволяет использовать столько строк, сколько необходимо. - person Berni; 15.03.2019

Это невозможно со стандартными UIAlertController или UIAlertView. Я бы порекомендовал вам сделать его короче. Почему бы вам не сделать предупреждение и не ввести что-то вроде этого:

Вы хотите обновить ответ только для этого экземпляра или для всех действий в этой серии?

Ответы будут такими:

  • Только этот экземпляр
  • Все мероприятия
person Fabio Berger    schedule 19.10.2015
comment
Если мой ответ помог вам решить вашу проблему, выберите его как принятый ответ. Спасибо! - person Fabio Berger; 20.10.2015

В iOS 10:

Если вы хотите применить его ко всем UIAlertController, вы можете использовать эти строки кода:

[[UILabel appearanceWhenContainedIn:[UIAlertController class], nil] setNumberOfLines:2];
[[UILabel appearanceWhenContainedIn:[UIAlertController class], nil] setFont:[UIFont systemFontOfSize:9.0]];

поместите это в метод didFinishLaunchingWithOptions AppDelegate.

person INDAPP    schedule 27.01.2017

попробуй это

let alert = UIAlertController(title: title,
                              message: "you message go here",
                              preferredStyle: 
UIAlertControllerStyle.alert)

let cancelAction = UIAlertAction(title: "Cancel",
                                 style: .cancel, handler: nil)

alert.addAction(cancelAction)
self.present(alert, animated: true, completion: nil)

UILabel.appearance(whenContainedInInstancesOf: 
[UIAlertController.self]).numberOfLines = 0

UILabel.appearance(whenContainedInInstancesOf: 
[UIAlertController.self]).lineBreakMode = .byWordWrapping
person Bruno Cavallari Gois    schedule 26.03.2018
comment
Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, почему и/или как этот код отвечает на вопрос, повышает его ценность в долгосрочной перспективе. - person rollstuhlfahrer; 26.03.2018