如何显示UILabels数组?

时间:2010-09-28 00:02:32

标签: iphone uilabel border

我有一个我想在UITableViewCell中显示的项目列表。现在,我只是使用一个用逗号分隔每个值的cell.textLabel,但我想做一些更有活力的事情。

我将如何实现这样的目标? alt text

这些边界上是否有边界和半径的UILabel数组?

感谢您的想法。

1 个答案:

答案 0 :(得分:1)

这可能是一种快速简便的方法。它基于您可以获得的代码here

请注意,您必须将QuartzCore框架添加到项目中并包含在您编写此代码的文件中!

每个UIView都有CALayer支持。您可以使用.layer属性访问UIView的CALayer。由于UILabel是UIView,因此您可以通过这种方式获得其支持层。获得背衬图层后,可以设置其backgroundColor,cornerRadius,borderColor和borderWidth属性。这应该可以让你创建圆角效果。

要获得居中效果,请尝试将UILabel的textAlignment设置为UITextAlignmentCenter。然后,您可以尝试根据sizeThatFits设置UILabel的框架,或者可以根据您放入标签的字符串调用sizeWithFont来设置。

这是一些快速,完全未经测试的代码,可以帮助您入门。

假设您已经按照以下方式初始化了UIFont(放入您想要的字体大小)。

labelFont = [UIFont systemFontOfSize:14];

然后,对于每个标签,将其设置如下。我假设您已将文本从数组中拉出并放入一个名为“text”的变量中。 X_PADDING和Y_PADDING是标签文本周围的间距。 xLoc和yLoc是您用来跟踪要放置标签的x和y位置的变量。你可能会根据textSize + X_PADDING + LABEL_SPACING或其他东西(你定义LABEL_SPACING)来增加xLoc:

 CGSize textSize = [text sizeWithFont:labelFont];
 CGRect frame = CGRectMake( xLoc, yLoc,
                            textSize.width + X_PADDING,
                            textSize.height + Y_PADDING);
 UILabel *label = [[UILabel alloc] initWithFrame:frame];
 label.text = text;
 label.textAlignment = UITextAlignmentCenter;

 CALayer *layer = label.layer;
 layer.masksToBounds = YES;
 layer.cornerRadius = 7.0; // or whatever works for you
 layer.borderWidth = 1.0;
 layer.borderColor = [[UIColor redColor].CGColor;
 layer.backgroundColor = [UIColor blueColor].CGColor;

 // Add the layer into its superview
 [yourSuperview addSubview:label];

我希望这有助于您入门。