2016-11-10 1 views
1

Я создаю форму IOS, которая отправляет обратно.IOS выровнять текстовый заполнитель для выравнивания по центру и левому краю

Я хочу иметь шаблонный текст, чтобы быть в центре по вертикали и горизонтали левого выравнивания в текстовом поле

Я попытался это

- (void)drawPlaceholderInRect:(CGRect)rect { 
    [RGB(36, 84, 157) setFill]; 

    UIFont *font = [UIFont SingPostLightItalicFontOfSize:_placeholderFontSize fontKey:kSingPostFontOpenSans]; 
    NSMutableParagraphStyle *paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy]; 
    paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping; 
    paragraphStyle.alignment = NSTextAlignmentLeft; 
    NSDictionary *attributes = @{ NSFontAttributeName: font, 
            NSParagraphStyleAttributeName: paragraphStyle, 
            NSForegroundColorAttributeName: [UIColor blackColor]}; 
    [[self placeholder] drawInRect:rect withAttributes:attributes]; 

} 

Но текст держатель место на вершине вертикали. Как мы можем достичь золота. Большое спасибо

enter image description here

+0

Какова ценность 'rect', она покрывает всю высоту элемента управления? или просто высоту одной строки текста-заполнителя? – NeverHopeless

+0

hi rect - это рамка удержания текстового поля –

+0

Не будет использовать автоматическую компоновку, 'UITextField' и свойство' placeholder' UITextField проще? UITextField уже выравнивает текст, вертикально центрированный для вас. Внутренняя тень будет проблемой, хотя, я не знаю, как создать внутреннюю тень, я знаю, как генерировать внешние тени тени с помощью кода. – Zhang

ответ

1

Следующий код будет решить вашу проблему. Я попробовал это сам. Это всего лишь одна дополнительная строка для вашего кода.

- (void)drawPlaceholderInRect:(CGRect)rect { 

     CGFloat fontSize = 18; 
     UIFont *font = [UIFont systemFontOfSize:fontSize]; 
     NSMutableParagraphStyle *paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy]; 
     paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping; 
     paragraphStyle.alignment = NSTextAlignmentLeft; 

     NSDictionary *attributes = @{ NSFontAttributeName: font, 
           NSParagraphStyleAttributeName: paragraphStyle, 
     NSForegroundColorAttributeName: [UIColor blackColor]}; 

     CGRect newRect = CGRectInset(rect, 0, rect.size.height/2 - fontSize/2); 
     [[super placeholder] drawInRect:newRect withAttributes:attributes]; 
} 
+0

Большое спасибо за решение проблемы. Считаете ли вы, что подкласс текстового поля существует для текстового поля по умолчанию для достижения того же результата? –

+0

Я думаю, что вы можете просто использовать свойство 'attributedPlaceholder'' UITextField'. Попробуйте один раз :) – KrishnaCA

0

Вы можете поместить «у» положение PlaceHolder означает ваш «прямоугольник» значение как высоту TextField/2 .one Дополнительными решения при использовании по умолчанию свойства текстового поля для заполнителя, которые будут выровнены по горизонтали ,

вроде как:

var tt : UITextField 
     tt.placeholder = "" 
+0

Привет, вы можете немного объяснить, как мы можем это реализовать? Спасибо –

+0

Как вы используете текстовое поле через раскадровку или программно? –

+0

Я использую программно (наследую старый проект) –

Смежные вопросы