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 = 上述结果

  • 相关阅读:
    自适应网页设计?
    布局设置加版心?
    bootstrap框架使用?
    Electron框架下,如何使用jquery?
    轮播插件swiper.js?
    表格出现滚动条设置?
    overflow问题--滚动设置?
    移动端页面适配ipad?
    移动端页面构建需注意?
    复杂的Sql分组
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/3836953.html
Copyright © 2011-2022 走看看