我添加了一个使用以下代码显示为圆圈的图像视图。
ImageView.layer.cornerRadius = ImageView.frame.size.width/2
ImageView.clipsToBounds = true
如何在其中实现显示数字的标签。我不知道该怎么做。我是一个很新的快速因此我不是,如果可以这样做或有更好的方法这样做。我的目标是创建一个自定义圆圈,在imageview中显示一个数字。
或者嵌入视图然后使用uibeziapath构建圆圈更好。
答案 0 :(得分:0)
如果要在其中包含空心圆和标签,可以使用CAShapeLayer和UIBezierPath创建自定义视图。这个课就是这样做的。
class CircleView: UIView {
let shapeLayer = CAShapeLayer()
var circularPath: UIBezierPath?
// This is your label, you can its property here like textColor and Font
let breathingStatusLabel : UILabel = {
let label = UILabel()
label.textColor = UIColor.white
label.text = “1”
label.textAlignment = .center
label.font = UIFont(name: "AvenirNext-UltraLight", size: 31)
label.alpha = 1.0
return label
}()
override init(frame: CGRect) {
super.init(frame: frame)
self.frame = frame
self.setupPaths()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
func setupPaths() {
// Add label to your view and set its frame
self.addSubview(breathingStatusLabel)
breathingStatusLabel.frame = CGRect.init(x: 0, y: 0, width: self.bounds.width, height: self.bounds.height)
breathingStatusLabel.center = CGPoint.init(x: self.bounds.width/2, y: self.bounds.height/2)
circularPath = UIBezierPath(arcCenter: .zero, radius: self.bounds.height / 2, startAngle: 0, endAngle: 2 * CGFloat.pi, clockwise: true)
shapeLayer.path = circularPath?.cgPath
shapeLayer.strokeColor = UIColor.red.cgColor
shapeLayer.lineWidth = 6.0
shapeLayer.fillColor = UIColor.clear.cgColor
shapeLayer.position = CGPoint(x: self.center.x, y: self.bounds.height / 2)
shapeLayer.lineCap = kCALineCapRound
shapeLayer.strokeEnd = 1
self.layer.addSublayer(shapeLayer)
self.shapeLayer.transform = CATransform3DMakeRotation(CGFloat.pi / 2, 0, 0, 1)
}
}
使用它:
let circle = CircleView(frame: someView.frame) // Some frame is where you want to show this.
view.addSubview(circle)
答案 1 :(得分:0)
我的目标是创建一个自定义圈子,在imageview中显示一个数字。
如果您没有在imageView中使用任何图像,但只是制作一个圆圈,那么如果使用
则更好mylabel.layer.cornerRadius = mylabel.frame.size.width/2
并将数据设置为mylabel.text = "2"
并确保它居中对齐。