【问题标题】:How can i change the degree at which the gradient starts如何更改渐变开始的程度
【发布时间】:2015-06-30 22:13:58
【问题描述】:

我正在使用这个存储库来绘制渐变,

https://github.com/paiv/AngleGradientLayer/blob/master/AngleGradient/AngleGradientLayer.m

我正在尝试改变渐变开始的角度。

左边的渐变是我目前拥有的,右边是我想要实现的。

http://i.imgur.com/muUPD0U.png

我需要设法编辑代码,通过使图层更大并旋转它,我在右侧得到了我想要的结果,但这意味着在屏幕上绘制更多像素,效率不高。

提前致谢。

AngleGradientLayer *l = (AngleGradientLayer *)self.layer;

l.colors = [NSArray arrayWithObjects:
            (id)[UIColor colorWithRed:38.0 / 255.0 green:154.0 / 255.0 blue:151.0 / 255.0 alpha:1].CGColor,
            (id)[UIColor colorWithRed:231.0 / 255.0 green:210.0 / 255.0 blue:130.0 / 255.0 alpha:1].CGColor,
            (id)[UIColor colorWithRed:195.0 / 255.0 green:85.0 / 255.0 blue:82.0 / 255.0 alpha:1].CGColor,
            nil];


NSMutableArray *locations = [[NSMutableArray alloc] initWithCapacity:3];

self.value1 = [NSNumber numberWithFloat:(0.0)];
self.value2 = [NSNumber numberWithFloat:(0.5)];
self.value3 = [NSNumber numberWithFloat:(1.0)];

[locations addObject: self.value1];
[locations addObject: self.value2];
[locations addObject: self.value3];

l.locations = locations;

【问题讨论】:

  • “值”最终对应于渐变中色标的位置(开始、50% 和 100%)。尝试更改它们并查看效果。例如从 0.0、0.5、1.0 更改为 0.0、0.3、0.6。
  • 我已经尝试了所有我能想到的方法,如果您参考图像,则不会影响该行。颜色传播效果很好,但这不是我想要改变的。
  • 是的,这很奇怪。我在代码中看到的唯一角度是在构建渐变时根据 CGRect 的宽度和高度计算每行/列的 - 它不是您可以直接控制的参数。你试过不开始@ 0.0吗?将第一个位置设为 0.3 并查看您是否将最后一个位置设为 1.3?看起来您可能无法使用负值,但可能大于 1.0 有效?
  • 是的,刚刚尝试过,但它并没有改变起点。

标签: ios objective-c gradient layer angle


【解决方案1】:

这是我在 AngleGradientLayer.m 中的 angleGradient(...) 函数中修补的一些代码。

float offset = M_PI / 4;
float angle = atan2f(dirY, dirX) + offset;
while (angle < 0) angle += 2 * M_PI;
while (angle > 2 * M_PI) angle -= 2 * M_PI;
while (angle < 0) angle += 2 * M_PI;

它替换了这些行

    float angle = atan2f(dirY, dirX);
    if (dirY < 0) angle += 2 * M_PI;

通常,您希望将 offset 设为函数的参数和AngleGradientLayer 的属性。 offset 位于辐射点 (0 ... 2π) 中。如果您想按照逆时针逻辑移动,可以使用 -offset。

【讨论】:

  • 我已经在使用它了,如果你看一下我发布的图片,这不会影响第一个颜色开始的行。
  • 对不起,我猜不出你的代码。你应该展示它。
  • 就像在示例中一样,locations 属性会影响颜色的分布方式,我正在尝试将您在左侧看到的线条更改为右侧的线条。
  • 这些数字是有意义的。您的代码从 0.0 开始。如果您希望它不同,请使用不同的数字!
  • 我知道,但这与我要实现的目标无关,这会改变颜色分布,而不是渐变的实际起点,请看图片你应该明白我的意思。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
相关资源
最近更新 更多