2016-08-12 5 views
0

Я хочу сделать UITextView, которые имеют максимальную ширину и минимальную высоту. Просто как чат-пузырь в приложении «сообщение» на нашем iPhone. Я попытался использовать размерThatFits. Но это не дало мне прекрасный размер.Как ограничить ширину и высоту в UITextView?

NSString *string = @"hello everyone"; 
_textView = [[UITextView alloc] init]; 
_textView.font = [UIFont systemFontOfSize:16]; 
_textView.text = string; 
[self.view addSubview:_textView]; 

CGSize size = [string sizeWithAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16]}]; 
CGFloat finalWidth = MIN(250, size.width); 
CGSize constraintSize = CGSizeMake(finalWidth, MAXFLOAT); 
CGSize finalSize = [_textView sizeThatFits:constraintSize]; 
_textView.frame = CGRectMake(0, 0, finalSize.width, finalSize.height); 

Я знаю, что есть что-то не так с моей code.So Интересно хороший способ правильно ограничить ширину и высоту в UITextView. Благодаря


некоторые друзья говорят мне, чтобы использовать Autolayout.Then я пытаюсь сделать it.Here мой код

[_textView mas_makeConstraints:^(MASConstraintMaker *maker){ 
    maker.right.equalTo(self.mas_left); 
    maker.top.equalTo(self.mas_top); 
    maker.width.lessThanOrEqualTo(@(250)); 
    maker.height.greaterThanOrEqualTo(@(40)); 
}]; 

Но это не работает, если я использую [_textView sizeToFit] Есть ли что-то не так с моими ограничениями? Я хочу, чтобы textView настроил себя в соответствии с его содержанием!

+1

Используйте Autolayout, добавив ограничения в UITextView. Магия произойдет без написания кода. :) – Harsh

+0

Вы должны использовать автозапуск! – Lion

ответ

-1
let minTextViewHeight = CGFloat(33) 
    let maxTextViewHeight = CGFloat(70) 
    @IBOutlet var textViewHeightConst: NSLayoutConstraint! 
    func textViewDidChange(textView: UITextView) { 
      //TEXTVIEW HEIGHT INCREASE WHILE TYPING 
      var height = ceil(txtViewChat.contentSize.height) // ceil to avoid decimal 

      if (height < minTextViewHeight) { 
       height = minTextViewHeight 
      } 
      if (height > maxTextViewHeight) { 
       height = maxTextViewHeight 
      } 
      if height != textViewHeightConst.constant { 
       textViewHeightConst.constant = height 
       } 
     } 
+0

ИСПОЛЬЗУЙТЕ AUTOLAYOUT !! – Harsh

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