您好,我想知道是否有人曾使用核心动画或 OpenGL 在 ImageView 上绘制阴影,使阴影成一定角度并呈圆形羽化。这是一种模糊的描述,所以我附上了我想要实现的目标的图像。我尝试过使用图层并尝试在核心动画中画线,但似乎什么都没有。我正在考虑在 OpenGL 中使用纹理来执行此操作,这是正确的方法吗?如果是这样,我将如何使用渐变在纹理上创建圆形展开?
让我知道是否有人做到了这一点,以及您是如何做到的。
这是我想要做的事情的图片:
最佳答案
我试过了..可能对你有帮助
viewMain = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
viewMain.backgroundColor = [UIColor redColor];
[self.view addSubview:viewMain];
[viewMain.layer setShadowOpacity:0.5];
[viewMain.layer setShadowRadius:5];
CGPoint startPoint = CGPointMake(10, 10), endPoint = CGPointMake(120, 120);
CGFloat angle = M_PI/3; // 60 degrees in radians
CGPoint v1 = CGPointMake(endPoint.x - startPoint.x, endPoint.y - startPoint.y);
CGPoint v2 = CGPointMake(cosf(angle) * v1.x - sinf(angle) * v1.y,
sinf(angle) * v1.x + cosf(angle) * v1.y);
CGPoint thirdPoint = CGPointMake(startPoint.x + v2.x, startPoint.y + v2.y);
UIBezierPath *triangle = [UIBezierPath bezierPath];
[triangle moveToPoint:startPoint];
[triangle addLineToPoint:endPoint];
[triangle addLineToPoint:thirdPoint];
[triangle closePath];
// ...
[viewMain.layer setShadowPath:triangle.CGPath];
您可以针对不同的角度修改 UIBezierPath。
关于Objective-C 核心动画或 OpenGL 以角度绘制阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21297163/