作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在(子类)UIButton
旁边做一些自定义下载进度条(或)我也可以在 UIView
中这样做,一切都很好,现在我想随着进度的进展改变标题的颜色,例如,如下图所示,我现在得到了什么,
我想要的是如下图
随着下载的进行,我想将标题的颜色更改为白色或其他颜色,有什么办法可以做,任何示例代码。
我通过使用下面的代码来实现这一点
- (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/
我是一名优秀的程序员,十分优秀!