将动态大小的UITextView放入UIScrollView

问题描述 投票:0回答:2

我对此很陌生,正在研究一个基本的主从应用程序。当您点击表格视图单元格时,将显示一个视图,该视图的顶部包含一个用于项目标题的UILabel,一个用于说明该项目的UIImage和一个用于提供项目说明的UITextView。目前,文本是可滚动的,而标签和图像保留在原处。

是否可以将所有内容添加到UIScrollView,以便整个视图(包括图像和标签)将立即滚动?文本视图中的信息是预先确定的,无法编辑,但是每个文本中的文本量会有所不同,因此文本视图需要自行调整大小(高度)以适合文本-这会引起问题吗?

ios objective-c iphone uiscrollview uitextview
2个回答
0
投票

您可以使用下面的代码动态设置TextView的高度

在.m文件viewDidLoad方法中添加以下几行

yourTextView=[[UITextView alloc]init];

txtView.frame=CGRectMake(0, 0, yourTextView.frame.size.width, [self textSize:YOURTEXT]+20);

yourTextView.backgroundColor=[UIColor clearColor];

yourTextView.userInteractionEnabled=NO;

yourTextView.font=[UIFont fontWithName:yourFont size:12];

yourScrollView.contentSize=CGSizeMake(320,yourTextView.frame.origin.y+yourTextView.frame.size.height+10);

之后添加此功能。

-(CGFloat) textSize:(NSString *)dataString
{

    UIFont *font = [UIFont fontWithName:yourFont size:12];
    CGSize constraintSize = CGSizeMake(yourTextView.frame.size.width-10, MAXFLOAT);
    CGSize labelSize = [dataString sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping];
    return labelSize.height+20;
}

0
投票

如果您不想编辑文本,请改用UILabel。确保将numberOfLines设置为0(无限制)或您选择的数字。

如果您想自己调整内容的大小,可以在textRectForBounds上使用UILabel

© www.soinside.com 2019 - 2024. All rights reserved.