我有一个我想在UITableViewCell中显示的项目列表。现在,我只是使用一个用逗号分隔每个值的cell.textLabel,但我想做一些更有活力的事情。
我将如何实现这样的目标?
这些边界上是否有边界和半径的UILabel数组?
感谢您的想法。
答案 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];
我希望这有助于您入门。