【问题标题】:Put dynamically sized UITextView into UIScrollView将动态大小的 UITextView 放入 UIScrollView
【发布时间】:2014-10-16 20:11:52
【问题描述】:

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

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

【问题讨论】:

    标签: ios objective-c iphone uiscrollview uitextview


    【解决方案1】:

    您可以使用以下代码动态设置 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;
    }
    

    【讨论】:

    • 我设法让文本视图使用方法“[self.textView sizeToFit]”调整自身大小,但现在我需要将它添加到滚动视图并通过扩展调整滚动视图的大小,正如你所提到的。
    【解决方案2】:

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

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

    【讨论】:

    • 如果我将 UILabel 用于还包含图片的详细视图,则文本通常会被截断。如何设置滚动视图的大小以适应标签的大小?每次标签的大小都不相同,因为每个详细视图的文本量都不同。
    • 您可以使用textRectForBounds计算大小,然后调用setContentSize
    猜你喜欢
    • 2012-11-24
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    相关资源
    最近更新 更多