У меня есть подкласс класса UITextField и я сделал код ниже
- (void)drawPlaceholderInRect:(CGRect)rect
{
[self.placeHolderTextColor setFill];
[self.placeholder drawInRect:rect
withFont:self.placeHolderFont
lineBreakMode:NSLineBreakByTruncatingTail
alignment:NSTextAlignmentLeft];
}
Я также написал self.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
строку кода
Этот текст-заполнитель правильно выровнен по центру в ios6, но не в ios7, он отображается с выравниванием по верхнему краю.
Хотя текст, который я печатаю, отображается по центру. У него проблема только со строкой-заполнителем.
Я попытался с помощью xib установить строку заполнителя. В XIB он отображается правильно, но когда я запускаю заполнитель текстового поля кода, он выравнивается по верхнему краю.
Любое обходное решение для этого?
Ответ Вадоффа сработал для меня. Тем не менее, это полная реализация, которая может помочь любому, у кого возникла такая же проблема.
Метод drawInRect
устарел в ios7, а drawInRectWithAttributes
работает
- (void)drawPlaceholderInRect:(CGRect)rect
{
[self.placeHolderTextColor setFill];
CGRect placeholderRect = CGRectMake(rect.origin.x, (rect.size.height- self.placeHolderFont.pointSize)/2 - 2, rect.size.width, self.placeHolderFont.pointSize);
rect = placeholderRect;
if(iOS7) {
NSMutableParagraphStyle* style = [[NSMutableParagraphStyle alloc] init];
style.lineBreakMode = NSLineBreakByTruncatingTail;
style.alignment = self.placeHolderTextAlignment;
NSDictionary *attr = [NSDictionary dictionaryWithObjectsAndKeys:style,NSParagraphStyleAttributeName, self.placeHolderFont, NSFontAttributeName, self.placeHolderTextColor, NSForegroundColorAttributeName, nil];
[self.placeholder drawInRect:rect withAttributes:attr];
}
else {
[self.placeholder drawInRect:rect
withFont:self.placeHolderFont
lineBreakMode:NSLineBreakByTruncatingTail
alignment:self.placeHolderTextAlignment];
}
}