Swift 5:把标签的背景圆变小

Swift 5: Make the background circle of the label smaller

我希望标签的圆边更小。

我设法把标签圆了,但是当我想把圆变小的时候,我做不到。

这是我的代码:

dayLabel.backgroundColor = .orange
dayLabel.layer.cornerRadius = dayLabel.bounds.width / 2
dayLabel.layer.masksToBounds = true

在标签上绘制圆圈的方法是更改​​标签图层的背景颜色和圆角半径。圆圈的大小始终是视图的大小。

您应该向视图添加 AutoLayout 约束以将其高度和宽度设置为您想要的值(实际上我会创建一个将宽度设置为给定值的约束,然后创建第二个将高度设置为等于的约束到宽度,所以你只需要指定一个值,并且总是得到一个正方形边界矩形和一个圆形而不是椭圆形。)

完成后,只需使用较小的宽度值即可使标签的背景圆变小。

请注意,当标签的布局发生变化时,您需要更新图层的角半径,否则可能会使用错误的角半径值。

您也可以将标签的背景设置为透明,并在视图层下添加一个新的 CAShapeLayer,其尺寸小于视图,但是如果视图尺寸发生变化,您将需要自定义代码来更新背景层的尺寸.

您可以更改标签的边界,这将减小背景圆圈的大小:

dayLabel.bounds = CGRect(x: dayLabel.bounds.minX, y: dayLabel.bounds.minY, width: 20, height: 20) //change these values to match your needs
dayLabel.textAlignment.center //to make sure the text stays centered

或者,如果您在故事板中创建 UILabel,请调整宽度和高度限制,保持字体大小不变。