gpt4 book ai didi

ios - 标签隐藏在圆形背景颜色下

转载 作者:行者123 更新时间:2023-11-29 02:37:50 26 4
gpt4 key购买 nike

我刚刚为我的圆形进度条添加了一个背景,但是这个背景现在覆盖了我在圆心的标签。

基本上,我有一个背景圆、一个半径(用于显示进度)和一个位于圆心的标签。现在添加圆圈背景意味着标签被覆盖。

这是我的代码:

class ProgressCircle: UIView {

override func drawRect(rect: CGRect) {
var ctx = UIGraphicsGetCurrentContext()

var innerRadiusRatio: CGFloat = 0.6

var path: CGMutablePathRef = CGPathCreateMutable()
var startAngle: CGFloat = CGFloat(-M_PI_2)
var endAngle: CGFloat = CGFloat(-M_PI_2) + min(1.0, progress) * CGFloat(M_PI * 2)
var outerRadius: CGFloat = CGRectGetWidth(self.bounds) * 0.5 - 1.0
var innerRadius: CGFloat = outerRadius * innerRadiusRatio
var center = CGPointMake(CGRectGetMidX(rect), CGRectGetMidY(rect))

//Code for background circle

var context: CGContextRef = UIGraphicsGetCurrentContext()
CGContextSetFillColorWithColor(context, (UIColor.darkGrayColor()).CGColor)
var rectangle: CGRect = CGRectMake(0, 0, 171, 171)
CGContextBeginPath(context)
CGContextAddEllipseInRect(context, rectangle)
CGContextDrawPath(context, kCGPathFill)

UIGraphicsEndImageContext()

//Code for progress radius

CGPathAddArc(path, nil, center.x, center.y, innerRadius, startAngle, endAngle, false)
CGPathAddArc(path, nil, center.x, center.y, outerRadius, endAngle, startAngle, true)
CGPathCloseSubpath(path)
CGContextAddPath(ctx, path)

CGContextSaveGState(ctx)
CGContextClip(ctx)
CGContextDrawImage(ctx, self.bounds, UIImage(named: "RadialProgressFill").CGImage)
CGContextRestoreGState(ctx)
}

这是我添加 subview 的方式:

    var circleFrame = CGRect(x: 75, y: 249, width: 171, height: 171)
var circle = ProgressCircle(frame: circleFrame)
self.budgetDisplayView.addSubview(circle)

circle.backgroundColor = UIColor.clearColor()

如何让标签显示在背景之上?

最佳答案

您需要重新排序 subview 。

如果您在 Interface Builder 中添加了 ProgressCircle View ,那么在 Xcode 的文档大纲中,将标签 View 向下拖动到 ProgressCircle View 下方。 subview 按顺序添加,因此后面的 subview 位于顶部。

如果你在代码中添加了你的ProgressCircle,在你的ViewController中添加了subView之后,调用sendSubviewToBack来将 ProgressCircle 移到其 sibling 后面:

self.budgetDisplayView.addSubview(circle)
self.budgetDisplayView.sendSubviewToBack(circle)

或者,如果您的标签中有一个名为 myLabel@IBOutlet,则可以将其置于前面:

self.budgetDisplayView.bringSubviewToFront(myLabel)

最后,确保标签的颜色能够在背景下显示。

关于ios - 标签隐藏在圆形背景颜色下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26152399/

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