0

我在页面下方创建 2 列。左栏是“标签”,右栏是“数据”。我正在“数据”端构建并获取 CGSize,因为它可能会大大缩减。“标签”一侧是预配置文本,写在数据之后。

但是如果对象中没有数据(nil?),问题就来了。然后下一个数据写入不会向下移动。下一个“标签”被覆盖了。这是我的代码。它重复了大约 20 种不同的属性。

提前致谢。我只是在寻找#1 检查没有“大小”(用户没有输入数据)和/或#2 分配最小“大小”的最干净的方法。这是基本上正在进行的代码..

size = [[self.currentLoad otherTrailers] sizeWithFont:textFont constrainedToSize:CGSizeMake(maxDataWidth, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];
[[self.currentLoad otherTrailers]drawInRect:CGRectMake(kMargin+maxLabelWidth+kColumnMargin, currentPageY, maxDataWidth, maxHeight) withFont:textFont lineBreakMode:NSLineBreakByWordWrapping alignment:NSTextAlignmentLeft];
[@"Other Trailers" drawInRect:CGRectMake(kMargin, currentPageY, maxLabelWidth, maxHeight) withFont:textFont lineBreakMode:NSLineBreakByWordWrapping alignment:NSTextAlignmentRight];
currentPageY += size.height;
4

1 回答 1

0

获取并检查值:

NSString *value = [self.currentLoad otherTrailers];
CGFloat height = 15; // or some appropriate minimum value
if (value.length) {
    size = [value sizeWithFont:textFont constrainedToSize:CGSizeMake(maxDataWidth, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];
    [value drawInRect:CGRectMake(kMargin+maxLabelWidth+kColumnMargin, currentPageY, maxDataWidth, maxHeight) withFont:textFont lineBreakMode:NSLineBreakByWordWrapping alignment:NSTextAlignmentLeft];
    height = size.height;
}

[@"Other Trailers" drawInRect:CGRectMake(kMargin, currentPageY, maxLabelWidth, maxHeight) withFont:textFont lineBreakMode:NSLineBreakByWordWrapping alignment:NSTextAlignmentRight];
currentPageY += height;
于 2013-08-28T23:16:04.193 回答