如何在UITextView中垂直对齐文本?

3
我有一个自定义单元格,其中包含 UITextView。我加载到这个 UITextView 中的文本长度从非常短到非常长都可能不同。因此,请不要建议使用标签(label)替代它。我想保持单元格的相同高度但在文本过长时使用 UITextView 的垂直滚动。
我尝试了这里的方法,但由于我在我的 cellForRowAtIndexPath 事件中使用自定义单元格初始化,所以观察者将不起作用。我在我的单元格类中通过 initWithStyle 函数尝试了相同的方法,但也没有成功。
你还有什么其他建议吗?或者我应该以不同的方式处理此函数?任何帮助都将不胜感激。
提前致谢。

你可以参考以下文章,它对我很有效。http://imagineric.ericd.net/2011/03/10/ios-vertical-aligning-text-in-a-uitextview/ - rishi
@RIP,请重新阅读第二段,我已经在我的问题中分享了相同的链接并声明了为什么我无法使其工作... - kubilay
3个回答

2

使用这个-

CGSize textSize = [myText sizeWithFont:whateverFont constrainedToSize:myTextViewBox.frame.size lineBreakMode:UILineBreakModeWordWrap];

然后在将UITextView添加到表格时,找出contentOffset并将其设置。


谢谢,但我不确定是否理解了。我应该动态添加TextView吗?你有示例代码吗? - kubilay

1

1
在你的TableView数据源中 -
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    NSUInteger row = [indexPath row];

    static NSString *CellIdentifier = @"myCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    } else { // if there is already a subview, remove it
        while ([[cell.contentView subviews] count] > 0) {
            UIView *labelToClear = [[cell.contentView subviews] objectAtIndex:0];
            [labelToClear removeFromSuperview];
        }
    }


    UITextView *myTextView = // initialise your textView here, including setting its contentOffset

    [cell.contentView addSubview:myTextView];

    return cell;

}

我一直在尝试但是得到了空单元格。你觉得这段代码如何?http://pastebin.com/7yKZr2T9 - kubilay
你还没有告诉它textView的大小 - 它的大小将为0x0。您需要执行UITextView *myTextView = [[[UITextView alloc] initWithFrame:whateverFrame] autorelease]; 此外,您的contentOffset的工作方式不正确 - 您可能希望将x分量设置为零,并且如果您已将y设置为textView的高度,则其向下偏移textView的高度,因此您无法看到它!负值意味着textView的顶部将在原点之上。 - SomaMan
不完全是你说的那样,但大部分都是,我做到了。非常感谢。 - kubilay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接