在UIAlertView中更改UITextField的字体大小

时间:2014-03-17 07:42:12

标签: ios iphone uitextfield uialertview

有谁知道如何在UIAlertView中更改UITextField的字体大小?以下是我的代码......

- (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 个答案:

答案 0 :(得分:8)

在iOS 7.x之后,您无法自定义警报视图的外观,

为什么?

因为其视图层次结构是私有的。

UIAlertView Class Reference中明确提到:

  

UIAlertView类旨在按原样使用,但不是   支持子类化。此类的视图层次结构是私有的   不得修改

所以遗憾的是,无法更改textField字体,按钮文本颜色等等。

唯一的解决方案是使用自定义UIAlertView之一。

答案 1 :(得分:2)

您必须使用自定义提醒视图。请查看以下链接。

DTAlertView

它具有良好的动画效果,也可以添加文本字段。

一旦你使用它,你就不必编写这么大的代码。

希望它有所帮助。

答案 2 :(得分:0)

您可以使用以下方法之一创建自定义UIAlertView

  1. http://code.tutsplus.com/tutorials/ios-sdk-uialertview-custom-graphics--mobile-8886
  2. https://github.com/eaigner/CODialog
  3. 并应用您的自定义textField

    对于第二个选项,在 CODialog.m addTextFieldWithPlaceholder函数)中,您可以更改字体大小,或修改kCODialogTextFieldHeight常量。

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