我在里面创建了一个带UITextView的UITableViewCell。
我正在使用Json来获取Textview的Html内容。我也在使用DTCoreText。这是我cellForRowAtIndexPath:
static NSString *CellIdentifier1 = @"NewsCell";
GTNewsCustomCell *newsCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier1];
if(newsCell == nil){
NSArray* nibViews = [[NSBundle mainBundle] loadNibNamed:@"GTNewsCustomCell"
owner:self//transfer ownership to self
options:nil];
newsCell = [nibViews objectAtIndex:0];
}
newsCell.cellFrame = CGRectMake(10, 0, 300,40);
newsCell.titleLabel.text = [[self.newsList objectAtIndex:indexPath.section]objectForKey:@"title"];
newsCell.messageTextView.textColor = [UIColor blackColor];
newsCell.messageTextView.backgroundColor = GTDefaultTextBackgroundColor;
newsCell.messageTextView.editable = NO;
newsCell.messageTextView.userInteractionEnabled = NO;
newsCell.messageTextView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
NSString *htmlTag = @"<b></b>";
NSString *html = [NSString stringWithFormat:@"%@%@",htmlTag,[[self.newsList objectAtIndex:indexPath.section]objectForKey:@"previewMessage"]];
.
.
.
return newsCell;
问题是我的TextView的内容有时大于文本视图的大小。奇怪的是,当我触摸文本视图时,它会更新自己并且每个人都被证明是正确的......可能出错了什么?
以下是一些截图:
破碎的TextView:
当我触摸Cell时,文本被格式化:
修改 好吧,不,我找到了我的问题,但我不知道如何解决它。在我的自定义单元格.m文件中,我有一个更改单元格大小宽度的方法:
- (void)layoutSubviews
{
[super layoutSubviews];
CGRect cellRect = self.bounds;
cellRect.size.width = self.cellFrame.size.width;
self.bounds = cellRect;
}
如果我删除这一切一切正常,但当然我的单元格已经没有正确的大小......但是我需要从TableView和Cell之间的左边和右边有一些空间!
答案 0 :(得分:0)
好的,最后我解决了这个问题:我删除了“layoutSubviews”方法,并插入:
- (void)setFrame:(CGRect)frame {
frame.origin.x += 10;
frame.size.width -= 2 * 10;
[super setFrame:frame];
}
现在我的文字总是有正确的尺寸,而我的细胞也有正确的尺寸!
答案 1 :(得分:0)
我一直认为最好不要试图篡改UITableViewCell
的框架/范围。每个单元格的框架由UITableView
设置,宽度等于表视图的宽度,高度等于表视图委托的tableView:heightForRowAtIndexPath:
返回的值,或者如果没有实现,则表视图的rowHeight
财产。
如果自定义单元格的内容(即子视图)不在您想要的位置,请在自定义layoutSubviews
实现(或您的笔尖)中定位这些。这里可以选择自动布局。在您的示例中,您将布置单元格的messageTextView
。