Objective-C 核心动画或 OpenGL 以角度绘制阴影

标签 objective-c uiimageview core-animation shadow

您好,我想知道是否有人曾使用核心动画或 OpenGL 在 ImageView 上绘制阴影,使阴影成一定角度并呈圆形羽化。这是一种模糊的描述,所以我附上了我想要实现的目标的图像。我尝试过使用图层并尝试在核心动画中画线,但似乎什么都没有。我正在考虑在 OpenGL 中使用纹理来执行此操作,这是正确的方法吗?如果是这样,我将如何使用渐变在纹理上创建圆形展开?

让我知道是否有人做到了这一点,以及您是如何做到的。

这是我想要做的事情的图片:

enter image description here

最佳答案

我试过了..可能对你有帮助

    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。

enter image description here

关于Objective-C 核心动画或 OpenGL 以角度绘制阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21297163/

相关文章:

iphone - 以时间间隔链接 UIView 动画

ios - 使用 CAGradientLayer 进行角度/圆渐变

ios - 像 WhatsApp 一样,iPhone 锁定时如何添加通知标题?

objective-c - Facebook库登录对话框如何修改其外观?

javascript - 从 JavaScript 调用 Objective-C 方法

iphone - 如何暂停 UIImageView 动画

ios - 使用 setText 时未调用 UITextField drawPlaceholderInRect

ios - 裁剪 UIImageView 和手势识别器

swift - 我正在尝试快速创建 UIImageView 的子类以添加一个简单的计数器

iphone - 如何在 CATiledLayer 中绘制平铺图案图像?