gpt4 book ai didi

ios - 如何在 Circle Swift 中添加值

转载 作者:行者123 更新时间:2023-11-30 11:29:23 25 4
gpt4 key购买 nike

我使用下面的代码添加了一个显示为圆圈的 ImageView 。

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

如何在其中实现显示数字的标签。我不知道该怎么做。我对 Swift 很陌生,因此我不知道是否可以做到这一点,或者是否有更好的方法来做到这一点。我的目标是创建一个自定义圆圈以在显示数字的 ImageView 中显示。

或者嵌入一个 View 然后使用uibeziapath构造一个圆更好。

最佳答案

如果您想要一个空心圆并在其中添加标签,您可以使用 CAShapeLayer 和 UIBezierPath 创建自定义 View 。这个类就是这样做的。

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)

关于ios - 如何在 Circle Swift 中添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50412452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com