我怎样才能改变渐变开始的程度
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。
我正在使用此存储库绘制渐变,
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。