绘制view形状

最近有个需求,是仿照微信公众号做一个界面,里面有一个弹出菜单。这次我选择自己绘制弹出菜单,而不是让UI切图。


菜单样式.png

直接上代码

    // 初始化遮罩
    CAShapeLayer *maskLayer = [CAShapeLayer layer];
    maskLayer.strokeColor =  [UIColor blueColor].CGColor; //kColorWithRGB(221, 222, 223).CGColor;
    maskLayer.lineWidth = 1;
    // 设置遮罩
    [self.layer setMask:maskLayer];
    // 初始化路径
    UIBezierPath *borderPath = [UIBezierPath bezierPath];
    // 遮罩层frame
    maskLayer.frame = CGRectMake(0, 0, width, height);
    // 设置path起点
    [borderPath moveToPoint:CGPointMake(10 * kScale, 0)];
    // 直线,到右上角
    [borderPath addLineToPoint:CGPointMake(width - 10 * kScale, 0)];
    // 右上角的圆角
    [borderPath addQuadCurveToPoint:CGPointMake(width, 10 * kScale) controlPoint:CGPointMake(width, 0)];
    // 直线,到右下角
    [borderPath addLineToPoint:CGPointMake(width, height - 30 * kScale)];
    // 右下角的圆角
    [borderPath addQuadCurveToPoint:CGPointMake(width - 10 * kScale, height - 20 * kScale) controlPoint:CGPointMake(width, height - 20 * kScale)];
    // 直线,到三角的右点起点
    [borderPath addLineToPoint:CGPointMake(width / 2 + 15 * kScale, height - 20 * kScale)];
    // 直线,到三角的下顶点
    [borderPath addLineToPoint:CGPointMake(width / 2, height)];
    // 直线,到三角的左点终点
    [borderPath addLineToPoint:CGPointMake(width / 2 - 15 * kScale, height - 20 * kScale)];
    // 直线,到左下角
    [borderPath addLineToPoint:CGPointMake(10 * kScale, height - 20 * kScale)];
    // 左下角的圆角
    [borderPath addQuadCurveToPoint:CGPointMake(0, height - 30 * kScale) controlPoint:CGPointMake(0, height - 20 * kScale)];
    // 直线,到左上角
    [borderPath addLineToPoint:CGPointMake(0, 10 * kScale)];
    // 左上角的圆角
    [borderPath addQuadCurveToPoint:CGPointMake(10 * kScale, 0) controlPoint:CGPointMake(0, 0)];
    // 将这个path赋值给maskLayer的path
    maskLayer.path = borderPath.CGPath;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 01 | 格拉德威尔——《纽约客》怪才 在说《引爆点》之前,先给大家介绍一下这个被称为《纽约客》怪才的作家—...
    啾啾爱读书阅读 4,790评论 0 1
  • 今个是年三十,白天我陪孩子疯了一天,晚上一家人吃了顿年夜饭,大家坐在一起喝酒,聊天,抢红包,真热闹。窗外鞭...
    吉祥爸爸_2555阅读 1,566评论 0 1
  • 猫,饿了!喵喵地叫着。 娃,见了!拿来了食物! 灯光下,炉子里的火吐着火苗,跳跃着。炉子上水壶里的水咕咚咕咚响着。...
    上官书函阅读 2,910评论 0 3
  • 七十年代的关中大地,终南山下一个偏僻的小山村,人们还在过着衣不蔽体,食不果腹的贫寒生活,站在村外的小路上,一眼望去...
    漫悠阅读 890评论 0 0