【问题标题】:How to get height of dynamically created UITextView iphone如何获取动态创建的 UITextView iphone 的高度
【发布时间】:2011-08-30 18:13:08
【问题描述】:

我正在尝试创建一个表格,其中包含包含 UITextViews 的单元格,用于可变数量的文本。我需要指定每个单元格的高度以匹配文本视图的内容大小。我正在使用...

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITextView *historyNode = [[[UITextView alloc]init]autorelease];
    historyNode.text = (@"%@",[globalArrayWithStrings objectAtIndex:[indexPath row]]);
    NSLog(@"%2.0f",historyNode.frame.size.height);
    return historyNode.contentSize.height;
}

由于某种原因,它总是打印 0。如果我打印在界面生成器中创建的文本视图的高度,它会打印正确的值。任何想法如何解决这个问题,或者为什么在将它添加到视图之前我无法获得文本视图的大小。

【问题讨论】:

    标签: iphone objective-c ios xcode uitableview


    【解决方案1】:

    您可以使用 sizeWithFont: 方法来查找动态高度。您的 heightForRowAtIndexPath: 应该如下所示。

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    
        NSString *text = [globalArrayWithStrings objectAtIndex:[indexPath row]];
        CGSize maxSize = CGSizeMake(textViewWidth, 999); // 999 can be any maxmimum height you want
        CGSize newSize = [text sizeWithFont:aFont constrainedToSize:maxSize lineBreakMode:textViewLineBreakMode];
        return newSize.height;
    }
    

    【讨论】:

    • #include <UIKit/UIKit.h> 在此文件的顶部以消除编译器警告。我认为没有它的方法应该可以解决,但是你会得到一个不必要的黄色!除非你给编译器一点帮助。
    • 什么 lineBreakMode 匹配 UITextView 行为?
    【解决方案2】:

    首先设置 uitextView 的框架,然后你会得到文本视图的高度。

    【讨论】:

    • 但关键是我不知道框架的大小。我正在尝试获取框架的高度。
    • 您可以计算西蒙回答的文本的内容大小,然后您可以设置文本视图的框架。那么只有你能得到高度,否则你怎么能得到你没有设置的值???
    猜你喜欢
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 2012-10-19
    • 2013-12-19
    • 1970-01-01
    • 2018-08-16
    相关资源
    最近更新 更多