gpt4 book ai didi

ios - 如何在 View 的图层颜色发生变化时制作不同的颜色外观

转载 作者:行者123 更新时间:2023-12-01 17:52:57 24 4
gpt4 key购买 nike

我正在(子类)UIButton 旁边做一些自定义下载进度条(或)我也可以在 UIView 中这样做,一切都很好,现在我想随着进度的进展改变标题的颜色,例如,如下图所示,我现在得到了什么,

enter image description here

我想要的是如下图

enter image description here

随着下载的进行,我想将标题的颜色更改为白色或其他颜色,有什么办法可以做,任何示例代码。

我通过使用下面的代码来实现这一点

 - (void)drawInContext:(CGContextRef)progressContext
{

CGContextSetFillColorWithColor(progressContext, self.progressLayerColor.CGColor);
CGMutablePathRef Path = CGPathCreateMutable();
CGRect boundsRect = self.bounds;
CGPathMoveToPoint(Path, NULL, boundsRect.origin.x, boundsRect.origin.y);

CGPathAddRect(Path, NULL, CGRectMake(0, 0, self.progress, 35));
CGPathCloseSubpath(Path);
CGContextAddPath(progressContext, Path);
CGContextFillPath(progressContext);
CGContextSetBlendMode(progressContext, kCGBlendModeClear);
CGContextFillPath(progressContext);

CGPathRelease(Path);

}

最佳答案

我会用两个 UILabel 来做这个,一个有绿色背景和白色文本,一个有白色背景和黑色文本,一个绿色的一个在另一个顶部,具有相同的框架。

最上面的标签有一个 CAShapeLayer 作为它的层 mask . CAShapeLayer 在其整个长度上从左到右有一个单一的、宽的(至少是标签的高度)黑色笔划。

默认情况下,这会使整个 View 看起来是绿色的。到目前为止,这么没用。

然而,一个 CAShapeLayer 有一个(动画)strokeEnd属性(property)。如果将此设置为 0.0,则绿色标签将不可见。将其设置为 0.5,您会看到一半。

您现在有了一种方法来为进度条设置动画,只需更新此 mask 层的 strokeEnd 属性即可。

关于ios - 如何在 View 的图层颜色发生变化时制作不同的颜色外观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23822531/

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