Список значений UIAlertAction

Я пытаюсь понять, как изменить тип шрифта для заголовка UIAlertAction. Я предполагаю, что это можно сделать, установив значение для определенного ключа. Например, чтобы установить изображение, вы должны сделать это:

action.setValue(image, forKey: "image")

Есть ли список всех доступных ключей? Я не могу понять, какую клавишу использовать для изменения шрифта, выравнивания заголовка влево/вправо и т. д.


person dmitryame    schedule 05.05.2015    source источник
comment
есть ли способ использовать атрибутированную строку для заголовка UIAlertAction?   -  person dmitryame    schedule 05.05.2015


Ответы (2)


class_copyIvarList может быть тем, что вам нужно.

Быстрый

extension UIAlertAction {
    static var propertyNames: [String] {
        var outCount: UInt32 = 0
        guard let ivars = class_copyIvarList(self, &outCount) else {
            return []
        }
        var result = [String]()
        let count = Int(outCount)
        for i in 0..<count {
            let pro: Ivar = ivars[i]
            guard let ivarName = ivar_getName(pro) else {
                continue
            }
            guard let name = String(utf8String: ivarName) else {
                continue
            }
            result.append(name)
        }
        return result
    }
}

потом

print(UIAlertAction.propertyNames)

и выход

["_title", "_titleTextAlignment", "_enabled", "_checked", "_isPreferred", "_imageTintColor", "_titleTextColor", "_style", "_handler", "_simpleHandler", "_image", "_shouldDismissHandler", "__descriptiveText", "_contentViewController", "_keyCommandInput", "_keyCommandModifierFlags", "__representer", "__interfaceActionRepresentation", "__alertController"]
person Phecda.S    schedule 21.01.2019

Вы можете использовать это, чтобы изменить цвет заголовка UIAlertAction.

 UIAlertController *alertController = [UIAlertController
                                          alertControllerWithTitle:@"alert view"
                                          message:@"hello alert controller"
                                          preferredStyle:UIAlertControllerStyleAlert];

    alertController.view.tintColor = [UIColor greenColor];

    UIAlertAction *cancelAction = [UIAlertAction
                                   actionWithTitle:@"Cancel"
                                   style:UIAlertActionStyleCancel
                                   handler:^(UIAlertAction *action)
                                   {

                                   }];
    [alertController addAction:cancelAction];

    [self.navigationController presentViewController: alertController animated:YES completion:nil];

OR

Проверьте эту ссылку-пользовательский шрифт, размер, цвет UIAlertController

person Nupur Gupta    schedule 19.11.2015
comment
В этом подходе сейчас есть несколько неправильных вещей: (Xcode 8.2.1) он влияет только на кнопки по умолчанию и кнопку отмены, а не на заголовок (или сообщение), а в некоторых версиях iOS .tintColor должен быть изменен после вызова presentViewController. Лучшим подходом к установке цвета кнопки является размещение [[UIView AppanceWhenContainedIn:[UIAlertController class], nil] setTintColor:appBarColor]; в вашем делегате приложения. - person Peter Johnson; 08.02.2017