如何在Circle Swift中添加值

时间:2018-05-18 13:29:46

标签: ios swift

我添加了一个使用以下代码显示为圆圈的图像视图。

ImageView.layer.cornerRadius = ImageView.frame.size.width/2
ImageView.clipsToBounds = true

如何在其中实现显示数字的标签。我不知道该怎么做。我是一个很新的快速因此我不是,如果可以这样做或有更好的方法这样做。我的目标是创建一个自定义圆圈,在imageview中显示一个数字。

或者嵌入视图然后使用uibeziapath构建圆圈更好。

2 个答案:

答案 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"并确保它居中对齐。