我怎样才能改变渐变开始的程度

How can i change the degree at which the gradient starts

我正在使用此存储库绘制渐变,

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;

这是我修补到 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。