2013-05-02 3 views
4

Я создал пользовательский класс UITextView, где textView динамически растет, так как пользовательские типы символов и текстовый фрейм изменяются динамически. Я хочу выровнять текст по центру по вертикали в кадре, он всегда будет снижаться по умолчанию. Я добавил UIEdgeInsets, чтобы сделать или похож на центр, но он создает больше проблем для меня. Если я пытаюсь установить смещение содержимого, тогда центр textView также сдвигает. Является ли смещение содержимого и центром textView друг к другу? это только текст внутри textView остается вертикально центром. Изначально я ставлю UITextView шрифт 23,0 с прямоугольной рамкой (TextView слой кадров границы) .Когда я начать печатать в этом поле текста наступающий на дне border.Then я используюUITextView text vertical Выравнивание

[textView setContentInset:UIEdgeInsetsMake(5,0,10,0)]; 

сделать текст в центре. Затем я должен отправить этот текст для печати, который помещен в UIImageView. Вот я использую упомянутый код Paras для соответствия dpi для печати и изменения его размера. Но текст, как выглядит UIImageview, не соответствует точному размещению печати, потому что я добавил UIEdgeInset для регулировки вертикального выравнивания

+0

обеспечивают некоторый пример того, как именно вы настраиваете UIEdgeInsets и какие проблемы он создает для вас точно? –

+0

добавлен после редактирования: тогда это другой вопрос, потому что правильный способ - использовать UIEdgeInsets, как вы указали (по крайней мере, ответ на ваш первоначальный вопрос лежит за этим свойством). –

+0

См. Ответ на тот же вопрос, который размещен здесь: http://stackoverflow.com/a/24871575/3499969 –

ответ

-1

у меня есть два типа, чтобы установить динамическую высоту до UITextView см оба ниже ...

UPDATE:

Первого Создание UITextView программен как сильфон .. .

-(IBAction)btnAddTextView:(id)sender 
{ 
    UIView *viewTxt = [[UIView alloc]initWithFrame:CGRectMake(imgBackBoard.center.x - 100,20, 220, 84)]; 
    [viewTxt setBackgroundColor:[UIColor clearColor]]; 
    viewTxt.userInteractionEnabled = YES; 

    UITextView *txtAddNote=[[UITextView alloc]initWithFrame:CGRectMake(20,20, 180, 44)]; 
    [txtAddNote setBackgroundColor:[UIColor scrollViewTexturedBackgroundColor]]; 
    [txtAddNote setFont:[UIFont fontWithName:@"Helvetica-Bold" size:15]]; 
    txtAddNote.layer.borderWidth = 2.0; 
    txtAddNote.layer.borderColor= [UIColor redColor].CGColor; 
    viewTxt.tag = 111; 
    txtAddNote.tag = 111; 
    txtAddNote.userInteractionEnabled= YES; 
    txtAddNote.delegate = self; 
    txtAddNote.textColor = [UIColor whiteColor]; 
    [viewTxt addSubview:txtAddNote]; 
    [viewBoard addSubview:viewTxt]; 
    [txtAddNote release]; 

} 

Первый

1. Этот метод является ниже делегат Метод UITextViewDelegate.

в .h классе добавить этот UITextViewDelegate, а затем дать вашему textView.delegate к self как сильфон ..

yourTextView.delegate = self; 

и использовать вставьте этот сильфон метод ...

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
{ 
    textView.frame = CGRectMake(textView.frame.origin.x, textView.frame.origin.y, textView.frame.size.width, textView.contentSize.height); 
    return YES; 
} 

здесь, когда ваш UITextView редактирования в время с его текстом, размер содержимого textView изменяется.

2. Используйте свой сильфон пользовательского метода для набора динамической Высоты UILable, UITextField, а также UITextView

-(float) calculateHeightOfTextFromWidth:(NSString*) text: (UIFont*)withFont: (float)width :(UILineBreakMode)lineBreakMode 
{ 
[text retain]; 
[withFont retain]; 
CGSize suggestedSize = [text sizeWithFont:withFont constrainedToSize:CGSizeMake(width, FLT_MAX) lineBreakMode:lineBreakMode]; 

[text release]; 
[withFont release]; 

return suggestedSize.height; 
} 

использовать этот метод, как сильфон ...

CGSize sizeToMakeLabel = [yourTextView.text sizeWithFont:yourTextView.font]; 
yourTextView.frame = CGRectMake(yourTextView.frame.origin.x, yourTextView.frame.origin.y, 
sizeToMakeLabel.width, sizeToMakeLabel.height); 

Я надеюсь, что это полезны вам :)

+0

Я думаю, что изменение рамки UITextView каждый раз, когда вставлен символ, не является хорошей идеей. Пользователь должен работать с NSString sizeWithFont: или подобный подход для вычисления высоты текста, и если количество строк изменяется только тогда, нужно изменить кадр –

+0

@ art-divin ya right У меня тоже есть этот тип кода, но это очень просто и просто так сначала отправлю это. –

+0

@ user1226038 см. этот ответ также .. http://stackoverflow.com/questions/12591192/center-text-vertically-in-a-uitextview надеюсь, что это вам полезно ...:) +1 –

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