调整UITextView的内容不起作用

时间:2013-02-23 20:41:20

标签: iphone ios objective-c uitextview

这是我想要调整其内容高度的UITextView的代码。

如果我明确写出textView.frame高度:

    textView.frame = CGRectMake(100, 12, 320, 458);

textView按预期大小调整其内容。

但是,如果我按如下方式编写它。虽然NSLog声明说textView.contentSize.height

的值是值,但它甚至不显示
UITextView *textView = [[UITextView alloc] init];
textView.layer.borderWidth = 5.0f;

textView.layer.borderColor = [[UIColor redColor] CGColor];

textView.text = [item objectForKey:@"description"];

textView.frame = CGRectMake(100, 12, 320, textView.contentSize.height);


NSLog(@"%f textviewcontnet size", textView.contentSize.height);

textView.editable = NO;

[self.view addSubview:textView];

当我记录输出时:

NSLog(@"%f textviewcontent size", textView.contentSize.height);

我得到" 458.000000 textviewcontent size"

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

我建议尝试:

UITextView *textView = [[UITextView alloc] init];
textView.layer.borderWidth = 5.0f;
textView.layer.borderColor = [[UIColor redColor] CGColor];
textView.text = [item objectForKey:@"description"];
textView.frame = CGRectMake(100, 12, 320, 458);    
textView.editable = NO;

[self.view addSubview:textView];

textView.frame = CGRectMake(100, 12, 320, textView.contentSize.height);    

我听说textView.contentSize.height在添加到视图中之前不起作用(虽然这不是我的经验)。更重要的是,如果它还不知道控件的宽度是什么,我不知道如何解释textView.contentSize.height。所以请继续,设置初始frame,执行addSubview,然后根据textView.contentSize.height重新调整大小。

答案 1 :(得分:0)

快速复制出我的一个项目:

AppDelegate *appDelegate;

CGSize  textSize1, textSize2;

appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];

textSize1 = [self.subjectLabel.text sizeWithFont:[appDelegate fontNormal] constrainedToSize:CGSizeMake(300.0f, 10000.0f) lineBreakMode:NSLineBreakByWordWrapping];
self.subjectLabel.frame = CGRectMake(10, 5, 300, textSize1.height);
textSize2 = [self.descriptionLabel.text sizeWithFont:[appDelegate fontNormal] constrainedToSize:CGSizeMake(300.0f, 10000.0f) lineBreakMode:NSLineBreakByWordWrapping];
self.descriptionLabel.frame = CGRectMake(10, 5 + textSize1.height + 5, 300, textSize2.height);

[appDelegate fontNormal]只返回一个UIFont对象,即我用于所有“普通”文本项的对象。不要太担心。但是,使用与文本视图相同的字体也很重要。

我的例子有点容易,因为它是一个UILable。这也适用于文本视图,但您必须考虑昆虫。简单的解决方案,只是从文本视图的框架宽度比宽度减去一些“模糊偏移”。