如何在UILabel画一个圆圈?

时间:2013-10-18 06:53:00

标签: iphone ios objective-c core-graphics uilabel

我想做这样的事, option image

如何在UILabel中绘制一个看起来与此图像相似的圆圈,我只想避免使用图像。

2 个答案:

答案 0 :(得分:11)

我建议在UILabel上添加一个形状图层。像这样:

// Create the shape layer

CAShapeLayer *circleLayer = [CAShapeLayer layer];
circleLayer.path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 50, 50)].CGPath;
circleLayer.fillColor = [UIColor clearColor].CGColor;
circleLayer.strokeColor = [UIColor whiteColor].CGColor;
circleLayer.lineWidth = 1;

// Add it do your label's layer hierarchy

[label.layer addSublayer:circleLayer];

这样可以最大限度地控制其外观和A的字体。

更新:

我刚刚想到你会努力让“A”垂直偏移,以便在它周围放一个圆圈。有一些hacks可以在UILabel中获得垂直居中,但是你最好还是使用UITextField,因为它支持contentVerticalAlignment属性。您只需将其userInteractionEnabled设置为NO即可防止用户在其上键入文本!

除此之外,添加CAShapeLayer的原则是相同的。

答案 1 :(得分:5)

您可以通过@maddy建议的方式实现此目的,或者使用方形矩形创建UILabel,将文本对齐放到中间,并使用标签的图层cornerRadiusborderWidth。只需将cornerRadius设置为标签的半宽(或高度)即可。祝你好运!