我正在使用此存储库绘制渐变
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;
答案 0 :(得分:0)
以下是我在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;
通常,您希望将函数的参数和属性AngleGradientLayer
设为偏移量。 offset
处于辐射状态(0 ...2π)。如果你想按照逆时针逻辑移动,可以使用-offset。