Изменение размера шрифта UITextField в UIAlertView


Кто-нибудь знает, как изменить размер шрифта UITextField в UIAlertView? Ниже приведен мой код...

- (void) editTitle
{
    NSString *string = kLocalizedString(@"Edit Title");

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil
                                                message:string
                                               delegate:self
                                      cancelButtonTitle:@"Cancel"
                                      otherButtonTitles:@"OK", nil];

    alert.alertViewStyle = UIAlertViewStylePlainTextInput;
    UITextField *textField = [alert textFieldAtIndex:0];
    if (!self.title) {
        textField.text = nil;
    }
    else {
        textField.text = self.title;
    }

    textField.clearsOnBeginEditing = NO;
    textField.clearButtonMode = UITextFieldViewModeAlways;
    textField.autocapitalizationType = UITextAutocapitalizationTypeWords;
    textField.clearsContextBeforeDrawing = NO;

    // These statements have no effect on the size of the text field's font
    textField.font = [UIFont systemFontOfSize:16.0];
    NSDictionary *attributes = @{
                NSFontAttributeName: [UIFont systemFontOfSize:16.0]}; 
    textField.typingAttributes = attributes;

    [alert show];
}
3 5

3 ответа:

После iOS 7.x вы не можете настроить внешний вид предупреждений,

Почему?

потому что его иерархия представлений является частной.

Он ясно упоминается в UIAlertView Class Reference :

Класс UIAlertView предназначен для использования как есть и не используется поддержка подклассов. Иерархия представлений для этого класса является частной и не должны быть изменены.

Поэтому, к сожалению, невозможно изменить шрифт текстового поля, цвет текста кнопок .. и т.д.

Единственным решением является использование одного из пользовательских UIAlertView.

Вы должны использовать пользовательский alertview. Просто проверьте ссылку ниже.

DTAlertView

Он имеет хорошую анимацию и текстовое поле можно добавить тоже.

Как только вы используете это, вам не нужно писать такой большой код.

Надеюсь, это поможет.

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

  1. http://code.tutsplus.com/tutorials/ios-sdk-uialertview-custom-graphics--mobile-8886
  2. https://github.com/eaigner/CODialog

И примените свой обычай textField.

Для второго варианта, в CODialog.М (addTextFieldWithPlaceholder функция) вы можете изменить размер шрифта или изменить константу kCODialogTextFieldHeight.

field.font = [UIFont systemFontOfSize:kCODialogTextFieldHeight - 8.0];