UITextView sizeToFit无法正常工作

All*_*len 4 objective-c ios

奇怪的是,我一直在寻找这个答案,但似乎没有任何效果!

我很简单UITextView,我正在尝试根据其内容在viewController中调整大小:

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSString *lorum = @"Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.";

    self.textView.text = lorum;

    self.textView.scrollEnabled = NO;
    [self.textView sizeToFit];
    [self.textView layoutIfNeeded];
}
Run Code Online (Sandbox Code Playgroud)

但这就是我最终的结果:

在此输入图像描述

我错过了一些明显的东西吗

更新(框架背景):

在此输入图像描述

Ila*_*rio 5

正如我在评论中写的,在我看来如果你不想使用UITextView的滚动我建议使用一个简单的UILabel ..这是代码:

编辑:如果你想出于某些原因使用UITextView,如可编辑文本或可选文本,你可以使用相同的代码进行一些修改(我在代码中添加此修改,如注释)

EDIT2,如果您的标签在故事板检查约束或删除autolayout

.H

  @interface ViewController : UIViewController {

    IBOutlet UILabel *label;

   }
Run Code Online (Sandbox Code Playgroud)

.M

 - (void)viewDidLoad {
   [super viewDidLoad];

 //  UILabel *label = [[UILabel alloc] init];
   label.backgroundColor = [UIColor lightGrayColor];

   NSString *lorum = @"Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.";

   //for use labrect with UITextView you set the font of UITextView:
   //label.font = [UIFont systemFontOfSize:17];       

   CGSize maxSize = CGSizeMake(320, 410);
   CGRect labrect = [lorum boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:label.font} context:Nil];

   label.text = lorum;
   //for use UITextView you should comment the line under
   label.numberOfLines = 0;
   label.frame = CGRectMake(0, 30, 320, labrect.size.height);

 //  [self.view addSubview:label];

  };
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


小智 5

https://medium.com/ios-os-x-development/102e73853fbc

看看这个解决方案.它对我有用!

您所要做的就是在故事板上添加一个高度约束,并在视图控制器中添加一个插座.然后将以下行添加到viewDidAppear方法:

CGSize size = self.textView.contentSize; self.textViewHeightConstraint.constant = size.height;

如果您点击链接,则有一个示例项目.