2011-07-20 55 views

回答

5

您可以通過該鍵@「_ placeholderLabel.font」

[self.input setValue:[UIFont fontWithName: @"American Typewriter Bold" size: 20] forKeyPath:@"_placeholderLabel.font"];

+0

它扭曲了佔位符的垂直對齊。 – Ankit

1

您可以覆蓋drawPlaceholderInRect做到這一點....

- (void) drawPlaceholderInRect:(CGRect)rect { 
     [[self placeholder] drawInRect:rect withFont:[UIFont systemFontOfSize:13]]; 
} 
+0

方法調用在哪裏?何時會調用此方法? –

+0

@PradeepReddyKypa你可以重寫UITextField中的這個方法,我相信它被稱爲ios即將呈現的佔位符。 –

+1

如果您使用此方法,請注意iOS 7中的文本位置。它不再考慮textField的垂直對齊方式。您必須自己移動矩形的原點。 – Justin

4

我發現了佔位符字體的字體大小和樣式可以通過設置字體樣式進行調整用於界面構建器中的實際文本。

+0

是否可以使用代碼更改佔位符文本?如果可能的話,你可以發佈代碼嗎? –

0

我面臨同樣的問題,因爲ANKIT編程設定值做了,我在文本字段代表改變字體大小解決它。

- (BOOL)textFieldShouldClear:(UITextField *)textField{ 
    [textField setFont:[UIFont fontWithName: @"American Typewriter Bold" size: 12]]; 
    return YES; 
} 
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ 
    if (range.location == 0 && range.length == 0) { 
     [textField setFont:[UIFont fontWithName: @"American Typewriter Bold" size: 18]]; 
    } 
    if(range.location == 0 && range.length == 1){ 
     [textField setFont:[UIFont fontWithName: @"American Typewriter Bold" size: 12]]; 
    } 
    return YES; 
} 
1

實際上,還有另一種設置font \ font color屬性的方式。

if ([self.textField respondsToSelector:@selector(setAttributedPlaceholder:)]) { 
    self.textField.attributedPlaceholder = [[NSAttributedString alloc] 
             initWithString:placeholder 
             attributes:@{ 
                NSForegroundColorAttributeName: newColor, 
                NSFontAttributeName:font, 
                NSBaselineOffsetAttributeName:[NSNumber numberWithFloat:offset] 
                }]; 
} else { 
    NSLog(@"Cannot set placeholder text's color, because deployment target is earlier than iOS 6.0"); 
     // TODO: Add fall-back code to set placeholder color. 
} 

注意NSBaselineOffsetAttributeName,它解決了錯誤的垂直對齊問題。