ios – 使用CAGradientLayer定义渐变的角度

前端之家收集整理的这篇文章主要介绍了ios – 使用CAGradientLayer定义渐变的角度前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用CaGradientLayer绘制角度渐变.我知道可以使用startPoint和endPoint定义角度.我可以为一些标准角度计算这些点,如0,90,180,360等.但我希望将这些点制定为任意角度.我尝试使用一些三角函数计算它,但没有取得任何成功.任何人都可以给我任何关于如何计算任意角度这些点的方向吗?

解决方法

这是一种方法,可以创建一个视图,允许根据滑块(或任何东西)的输入360度旋转其双色渐变.传入的滑块值(下面的“x”变量)介于0.0和1.0之间.

在0.0处,梯度是水平的(颜色A在顶部,颜色B在下面),旋转360度到值1.0(与值0.0相同 – 或完整旋转).

例如.当x = 0.25时,左边是颜色A,颜色B是右边.在0.5时,颜色A在下面,颜色B在上面,0.75颜色A在右边,颜色B在左边.它从右向左逆时针旋转.

它需要四个参数:frame,colourA,colourB和输入值(0-1).

-(UIView *)gradientViewWithFrame:(CGRect)frame colourA:(UIColor *)A colourB:(UIColor *)B rotation:(float)x {

//x is between 0 and 1,eg. from a slider,representing 0 - 360 degrees
//colour A starts on top,with colour B below
//rotations move anti-clockwise

//1. create the colour view
UIView * colourView = [UIView new];
colourView.frame = frame;

//2. create the gradient layer
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = colourView.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[A CGColor],(id)[B CGColor],nil];
[colourView.layer insertSublayer:gradient atIndex:0];

//3. create coordinates
float a = pow(sinf((2*M_PI*((x+0.75)/2))),2);
float b = pow(sinf((2*M_PI*((x+0.0)/2))),2);
float c = pow(sinf((2*M_PI*((x+0.25)/2))),2);
float d = pow(sinf((2*M_PI*((x+0.5)/2))),2);

//4. set the gradient direction
[gradient setStartPoint:CGPointMake(a,b)];
[gradient setEndPoint:CGPointMake(c,d)];

return colourView;
}
原文链接:https://www.f2er.com/iOS/332618.html

猜你在找的iOS相关文章