2013-06-11 1 views
1

У меня есть UIScrollView, который включает в себя несколько компонентов, и один из этих компонентов является UITextView, что я хочу, чтобы позволить UITextView динамически расширяется с UIScrollView, на самом деле Я использую autoLayout, так что этот код не работает:UITextView, которая расширяется динамически текст внутри в целях прокрутки с помощью автоматической раскладки

CGRect frame = self.detailTextView.frame; 
    frame.size.height = self.detailTextView.contentSize.height; 
    self.detailTextView.frame = frame; 
    scroll.contentSize = CGSizeMake(scroll.contentSize.width, 
            300 + self.detailTextView.frame.size.height); 
    [self.detailTextView setFrame:frame]; 

То, что я хочу, чтобы помочь мне сделать это с раскадровки элементами.

enter image description here

ответ

3

Вместо того чтобы устанавливать рамку, перетащите один из ограничений высоты для вашего зрения текста в контроллер, чтобы создать выход. Затем в viewWillLayoutSubviews захватывают contentSize и устанавливают константу ограничения высоты отображения текстового вида. Это должно выполнить то, что вы делаете с фреймом в вашем коде выше. Просто убедитесь, что ваше текстовое представление имеет ограничения со всех краев на вид прокрутки, чтобы вид прокрутки мог правильно масштабироваться.

+0

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

+0

Задайте ограничение по высоте после заданного текста. 'self.textviewHeightConstraint.constant = self.textview.contentSize.height;' – situee

3

В моем случае, что я сделал, сохраняется scrollview как супер-просмотр и добавлены все ограничения для subviews, а uitextview имеет ограничение от всех ребер к scrollview. затем обновил размер содержимого в методе -viewDidLayoutSubviews. здесь находится фрагмент кода:

-(void)viewDidLayoutSubviews{ 
    NSDictionary *attributes = @{NSFontAttributeName:[UIFont systemFontOfSize:12.0]}; 

    CGRect rect = [_detailText.text boundingRectWithSize:CGSizeMake(_detailText.frame.size.width - 10.0, MAXFLOAT) 
              options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading 
              attributes:attributes 
              context:nil]; 
    CGRect frame = _detailText.frame; 
    frame.size.height = ceil(rect.size.height) + _detailText.textContainerInset.top +    _detailText.textContainerInset.bottom; 
    _detailText.frame = frame; 
    _detailText.contentSize = CGSizeMake(_detailText.frame.size.width, _detailText.frame.size.height); 
    [_contentScrollView setContentSize:CGSizeMake(_contentScrollView.frame.size.width, _detailText.frame.origin.y + _detailText.frame.size.height)]; 
}