我想在图像中显示一些这样的东西,其中两个UILabel垂直旁边的另一个根据文本进行扩展。
这就是我尝试的方式。
对于label1,我正在使用NSMutableAttributedString,以便我可以设置行间距。 Label2使用普通的String文本。
UITableView的属性
tableView.estimatedRowHeight = 110
tableView.rowHeight = UITableViewAutomaticDimension
heightForRowAtIndexPath()未实现,因为这些属性将动态处理高度
在CellForRowAtIndexPath()
中var paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineSpacing = 15
paragraphStyle.alignment = NSTextAlignment.Right
attrString = NSMutableAttributedString(string: "HUGE TEXT 1")
attrString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(0, attrString.length))
myCell.label1.attributedText = attrString
myCell.label2.text = "HUGE TEXT 2"
问题:当向下滚动(新单元格从下向下)没有问题时,但是当我向上滚动(新单元格从上向上)时,单元格开始闪烁,然后调整大小以适应滚动结束。闪烁仅在UILabel2上。对于这种布局,我似乎没有找到堆栈溢出的任何解决方案。
答案 0 :(得分:0)
这可以帮助您在UITableViewCell中实现此方法:
+ (CGFloat) cellHeightForContent:(NSString)aContent {
CGFloat result = 0;
CGSize textDims = [aContent getCorrectSizeWithFont:[UIFont fontWithName:@"Helvetica" size:13] constrainedToSize:CGSizeMake(kLabelWidth, CGFLOAT_MAX)];
result = 2 * kMarginHeight + textDims.height;
return result;
}
此方法返回的值将用于heightForRowAtIndexPath
方法。
之后,您需要在NSString类别中定义方法getCorrectSizeWithFont
,如下所示:
- (CGSize)getCorrectSizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size
{
NSMutableDictionary *attrsDictionary = [NSMutableDictionary dictionaryWithObject:font forKey:NSFontAttributeName];
NSMutableParagraphStyle *paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[attrsDictionary setObject:paragraphStyle forKey:NSParagraphStyleAttributeName];
NSMutableAttributedString* attrStrWithLinks = [[NSMutableAttributedString alloc] initWithString:self attributes:attrsDictionary];
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)attrStrWithLinks);
CGSize sz = CTFramesetterSuggestFrameSizeWithConstraints(framesetter,CFRangeMake(0,0),NULL,CGSizeMake(size.width,CGFLOAT_MAX),NULL);
if (framesetter) CFRelease(framesetter);
return CGSizeMake(sz.width,sz.height);
}