美文网首页iOS
工具类(为控件设置圆角) - iOS

工具类(为控件设置圆角) - iOS

作者: survivorsfyh | 来源:发表于2018-09-12 15:32 被阅读81次

为了便于日常开发效率,因此创建了一些小的工具类便于使用.
具体 code 如下:
声明:

/*
 为控件添加边框样式_工具类
 */
#import <UIKit/UIKit.h>
 
typedef NS_ENUM(NSInteger,LQQSideType) {
    kLQQSideTypeTop    = 0,
    kLQQSideTypeLeft   = 1,
    kLQQSideTypeBottom = 2,
    kLQQSideTypeRight  = 3,
    kLQQSideTypeAll    = 4,
};
 
typedef NS_ENUM(NSInteger,LQQSideAngleType) {
    kLQQSideAngleTypeTopLeft         = 0,
    kLQQSideAngleTypeTopRight        = 1,
    kLQQSideAngleTypeBottomLeft      = 2,
    kLQQSideAngleTypeBottomRight     = 3,
    kLQQSideAngleTypeAll             = 4,
};
 
 
 
@interface UIView (FYH)
 
/**
 设置不同边的圆角
 @param sideType        圆角类型
 @param cornerRadius    圆角半径
 */
- (void)cornerSideType:(LQQSideType)sideType withCornerRadius:(CGFloat)cornerRadius;
 
 
/**
 设置不同角的圆角
 @param sideType        圆角类型
 @param cornerRadius    圆角半径
 */
- (void)cornerSideAngleType:(LQQSideAngleType)sideType withCornerRadius:(CGFloat)cornerRadius;
 
 
/**
 设置view某一边框
 @param sideType    哪个边
 @param color       边框颜色
 @param width       边框宽度
 */
- (void)cornerSideType:(LQQSideType)sideType lineColor:(UIColor *)color lineWidth:(CGFloat)width;
 
@end

实现:

#import "UIView+FYH.h"
 
@implementation UIView (FYH)
 
- (void)cornerSideType:(LQQSideType)sideType withCornerRadius:(CGFloat)cornerRadius
{
    CGSize cornerSize = CGSizeMake(cornerRadius, cornerRadius);
    UIBezierPath *maskPath;
    
    switch (sideType) {
        case kLQQSideTypeTop:
        {
            maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds
                                             byRoundingCorners:(UIRectCornerTopLeft|UIRectCornerTopRight)
                                                   cornerRadii:cornerSize];
        }
            break;
        case kLQQSideTypeLeft:
        {
            maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds
                                             byRoundingCorners:(UIRectCornerTopLeft|UIRectCornerBottomLeft)
                                                   cornerRadii:cornerSize];
        }
            break;
        case kLQQSideTypeBottom:
        {
            maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds
                                             byRoundingCorners:(UIRectCornerBottomLeft|UIRectCornerBottomRight)
                                                   cornerRadii:cornerSize];
        }
            break;
        case kLQQSideTypeRight:
        {
            maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds
                                             byRoundingCorners:(UIRectCornerTopRight|UIRectCornerBottomRight)
                                                   cornerRadii:cornerSize];
        }
            break;
        default:
        {
            maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds
                                             byRoundingCorners:UIRectCornerAllCorners
                                                   cornerRadii:cornerSize];
        }
            break;
    }
    
    // Create the shape layer and set its path
    CAShapeLayer *maskLayer = [CAShapeLayer layer];
    maskLayer.frame = self.bounds;
    maskLayer.path = maskPath.CGPath;
    
    // Set the newly created shape layer as the mask for the image view's layer
    self.layer.mask = maskLayer;
    
    [self.layer setMasksToBounds:YES];
}
 
 
- (void)cornerSideAngleType:(LQQSideAngleType)sideType withCornerRadius:(CGFloat)cornerRadius
{
    CGSize cornerSize = CGSizeMake(cornerRadius, cornerRadius);
    UIBezierPath *maskPath;
    
    switch (sideType) {
        case kLQQSideAngleTypeTopLeft:
        {
            maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds
                                             byRoundingCorners:(UIRectCornerTopLeft)
                                                   cornerRadii:cornerSize];
        }
            break;
        case kLQQSideAngleTypeTopRight:
        {
            maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds
                                             byRoundingCorners:(UIRectCornerTopRight)
                                                   cornerRadii:cornerSize];
        }
            break;
        case kLQQSideAngleTypeBottomLeft:
        {
            maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds
                                             byRoundingCorners:(UIRectCornerBottomLeft)
                                                   cornerRadii:cornerSize];
        }
            break;
        case kLQQSideAngleTypeBottomRight:
        {
            maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds
                                             byRoundingCorners:(UIRectCornerBottomRight)
                                                   cornerRadii:cornerSize];
        }
            break;
        default:
        {
            maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds
                                             byRoundingCorners:UIRectCornerAllCorners
                                                   cornerRadii:cornerSize];
        }
            break;
    }
    
    // Create the shape layer and set its path
    CAShapeLayer *maskLayer = [CAShapeLayer layer];
    maskLayer.frame = self.bounds;
    maskLayer.path = maskPath.CGPath;
    
    // Set the newly created shape layer as the mask for the image view's layer
    self.layer.mask = maskLayer;
    
    [self.layer setMasksToBounds:YES];
}
 
- (void)cornerSideType:(LQQSideType)sideType lineColor:(UIColor *)color lineWidth:(CGFloat)width
{
    CAShapeLayer *layer = [CAShapeLayer layer];
    UIBezierPath *aPath = [UIBezierPath bezierPath];
    
    switch (sideType) {
        case kLQQSideTypeTop:
        {
            [aPath moveToPoint:CGPointMake(0.0, 0.0)];
            [aPath addLineToPoint:CGPointMake(self.frame.size.width, 0.0)];
        }
            break;
        case kLQQSideTypeLeft:
        {
            [aPath moveToPoint:CGPointMake(0.0, 0.0)];
            [aPath addLineToPoint:CGPointMake(0.0, self.frame.size.height)];
        }
            break;
        case kLQQSideTypeBottom:
        {
            [aPath moveToPoint:CGPointMake(0.0, self.frame.size.height)];
            [aPath addLineToPoint:CGPointMake(self.frame.size.width, self.frame.size.height)];
        }
            break;
        case kLQQSideTypeRight:
        {
            [aPath moveToPoint:CGPointMake(self.frame.size.width,0.0)];
            [aPath addLineToPoint:CGPointMake(self.frame.size.width, self.frame.size.height)];
            
        }
            break;
        default:
        {
            
        }
            break;
    }
    
    layer.path = aPath.CGPath;
    layer.strokeColor = color.CGColor;
    layer.lineWidth = width;
    [self.layer addSublayer:layer];
}
 
@end

以上便是此次分享的内容,期待大神多多指点补充,使其更加强壮!

相关文章

网友评论

    本文标题:工具类(为控件设置圆角) - iOS

    本文链接:https://www.haomeiwen.com/subject/ponvgftx.html