内阴影 内部凹陷 UIBezierPath简单应用

这篇博客介绍了如何在没有设计图的情况下,通过UIBezierPath实现内阴影效果。作者在遇到只显示外阴影的问题后,采取了画图垫底的方式,成功创建了内阴影。关键步骤包括设置一个父View,包含imageView显示阴影图像,以及设置为clearColor的scrollView。
摘要由CSDN通过智能技术生成

遇到了个第一次见的效果:内阴影效果!
直接layer shadow调了半天还是外阴影,关键是UI不给图!!!mmp的

内阴影 5像素

然后大佬指引我画张图垫底下
果然,调了调完全可以解决。下面是关键代码部分:

- (void)setShadowViewShadowInfo{
    UIGraphicsBeginImageContext(CGSizeMake(SCR_WIDTH, 69));
    CGContextRef contextRef = UIGraphicsGetCurrentContext();

    NSShadow *shadow = [[NSShadow alloc]init];
    shadow.shadowColor = [UIColor colorWithHexStr:@"B6B6B8" withAlpha:1];
    shadow.shadowOffset = CGSizeMake(0, 0);
    shadow.shadowBlurRadius = 5.;

    UIBezierPath *rectanglePath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(-3, 0, SCR_WIDTH + 6, 69) cornerRadius:2];
    rectanglePath.lineWidth = 8;

    [[UIColor whiteColor] setFill]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用Bresenham算法画一个向内凹陷的菱形,你可以按照以下步骤进行: 1. 首先,确定菱形的中心点和大小。假设菱形的中心点为(cx, cy),边长为size。 2. 然后,通过绘制线段来生成菱形的四条边。你可以使用Bresenham算法来绘制直线段。 3. 对于每条边,你需要计算起点和终点坐标。可以根据菱形的中心点和大小来计算。 4. 最后,调用Bresenham算法来绘制每条边。 以下是一个使用Java编写的示例代码: ```java public class BresenhamDiamond { public static void drawDiamond(int cx, int cy, int size) { // 计算起点和终点坐标 int x = cx; int y = cy - size/2; int xEnd = cx + size/2; int yEnd = cy; // 绘制上半部分边 drawLine(x, y, xEnd, yEnd); // 计算起点和终点坐标 x = cx + size/2; y = cy; xEnd = cx; yEnd = cy + size/2; // 绘制右半部分边 drawLine(x, y, xEnd, yEnd); // 计算起点和终点坐标 x = cx; y = cy + size/2; xEnd = cx - size/2; yEnd = cy; // 绘制下半部分边 drawLine(x, y, xEnd, yEnd); // 计算起点和终点坐标 x = cx - size/2; y = cy; xEnd = cx; yEnd = cy - size/2; // 绘制左半部分边 drawLine(x, y, xEnd, yEnd); } public static void drawLine(int x0, int y0, int x1, int y1) { // 使用Bresenham算法绘制直线段 // 这里省略具体的实现 // 输出绘制的直线段 System.out.println("绘制直线段:(" + x0 + ", " + y0 + ") -> (" + x1 + ", " + y1 + ")"); } public static void main(String[] args) { int centerX = 100; int centerY = 100; int size = 50; drawDiamond(centerX, centerY, size); } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值