zoukankan      html  css  js  c++  java
  • APRoundedButton

    APRoundedButton

    https://github.com/elpsk/APRoundedButton

    效果:

    源码:

    APRoundedButton.h

    //
    //  Created by Alberto Pasca on 27/02/14.
    //  Copyright (c) 2014 albertopasca.it. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    
    @interface APRoundedButton : UIButton
    
    @property (nonatomic, assign) int style;
    
    @end

    APRoundedButton.m

    //
    //  Created by Alberto Pasca on 27/02/14.
    //  Copyright (c) 2014 albertopasca.it. All rights reserved.
    //
    
    #import "APRoundedButton.h"
    #import <QuartzCore/QuartzCore.h>
    
    
    @implementation APRoundedButton
    
    - (void)awakeFromNib
    {
      [super awakeFromNib];
    
      UIRectCorner corners;
    
    
      switch ( self.style )
      {
        case 0:
          corners = UIRectCornerBottomLeft;
          break;
        case 1:
          corners = UIRectCornerBottomRight;
          break;
        case 2:
          corners = UIRectCornerTopLeft;
          break;
        case 3:
          corners = UIRectCornerTopRight;
          break;
        case 4:
          corners = UIRectCornerBottomLeft | UIRectCornerBottomRight;
          break;
        case 5:
          corners = UIRectCornerTopLeft | UIRectCornerTopRight;
          break;
        case 6:
          corners = UIRectCornerBottomLeft | UIRectCornerTopLeft;
          break;
        case 7:
          corners = UIRectCornerBottomRight | UIRectCornerTopRight;
          break;
        case 8:
          corners = UIRectCornerBottomRight | UIRectCornerTopRight | UIRectCornerTopLeft;
          break;
        case 9:
          corners = UIRectCornerBottomRight | UIRectCornerTopRight | UIRectCornerBottomLeft;
          break;
        default:
          corners = UIRectCornerAllCorners;
          break;
      }
    
    
      UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds
                                                     byRoundingCorners:corners
                                                           cornerRadii:CGSizeMake(20.0, 30.0)];
      CAShapeLayer *maskLayer = [CAShapeLayer layer];
      maskLayer.frame         = self.bounds;
      maskLayer.path          = maskPath.CGPath;
      self.layer.mask         = maskLayer;
    }
    
    
    @end

    核心的地方:

    贝塞尔曲线(矩形带圆角的那种) + CAShapeLayer + layer.mask = 上述结果

  • 相关阅读:
    使用JS完成首页轮播图效果
    使用JS完成注册表单的数据校验
    网上商城------表单校验
    网上商城-----注册功能的实现
    网上商城-----环境配置
    博客还是搬到csdn吧~
    【【【超高仿】】】迅雷播放器教程 -- 总结(14)
    duilib进阶教程 -- 总结 (17)
    duilib进阶教程 -- 改进List控件 (16)
    duilib进阶教程 -- 设置资源路径 (15)
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/3836953.html
Copyright © 2011-2022 走看看