#import "UIView+Extention.h" @implementation UIView (Extention) - (void)setX:(CGFloat)x{ CGRect frame =self.frame; frame.origin.x = x; self.frame = frame; } - (CGFloat)x{ return self.frame.origin.x; } - (void)setY:(CGFloat)y{ CGRect frame =self.frame; frame.origin.y = y; self.frame = frame; } - (CGFloat)y{ return self.frame.origin.y; } - (void)setHeight:(CGFloat)height{ CGRect frame =self.frame; frame.size.height = height; self.frame = frame; } - (CGFloat)height{ return self.frame.size.height; } - (void)setWidth:(CGFloat)width{ CGRect frame =self.frame; frame.size.width = width; self.frame = frame; } - (CGFloat)width{ return self.frame.size.width; } - (void)setCenterX:(CGFloat)centerX { CGPoint point =self.center; point.x = centerX; self.center = point; } - (CGFloat)centerX { return self.center.x; } - (void)setCenterY:(CGFloat)centerY{ CGPoint point =self.center; point.y = centerY; self.center = point; } - (CGFloat)centerY { return self.center.y; } - (void)setOrigin:(CGPoint)origin{ CGRect frame =self.frame; frame.origin = origin; self.frame = frame; } - (CGPoint)origin{ return self.frame.origin; } - (void)setSize:(CGSize)size{ CGRect frame =self.frame; frame.size = size; self.frame = frame; } - (CGSize)size{ return self.frame.size; } - (void)addGradientLayerWithColors:(NSArray *)colors direction:(GradientLayerDirection)direction size:(CGSize)size { CAGradientLayer *gradientLayer = [CAGradientLayer layer]; gradientLayer.frame = CGRectMake(0, 0, size.width, size.height); NSMutableArray *array = [NSMutableArray array]; for (UIColor *color in colors) { [array addObject:(__bridge id)color.CGColor]; } gradientLayer.colors = array; switch (direction) { case GradientLayerDirection_V: { gradientLayer.startPoint = CGPointMake(0.5, 0.0); // 顶部中间 gradientLayer.endPoint = CGPointMake(0.5, 1.0); // 底部中间 } break; case GradientLayerDirection_H: { gradientLayer.startPoint = CGPointMake(0, 0.5); // 顶部中间 gradientLayer.endPoint = CGPointMake(1, 0.5); // 底部中间 } break; } [self.layer insertSublayer:gradientLayer atIndex:0]; } - (void)setCornerRadius:(CGFloat)cornerRadius { self.layer.cornerRadius = cornerRadius; self.layer.masksToBounds = YES; } - (void)addGradientLayerWithColors:(NSArray *)colors direction:(GradientLayerDirection)direction frame:(CGRect)frame roundingCorners:(UIRectCorner)corners cornerRadii:(CGFloat)cornerRadii { NSString *name = @"k_gradientLayer"; for (CALayer *layer in self.layer.sublayers) { if ([layer.name isEqualToString:name]) { [layer removeFromSuperlayer]; break; } } CAGradientLayer *gradientLayer = [CAGradientLayer layer]; gradientLayer.name = name; gradientLayer.frame = frame; NSMutableArray *array = [NSMutableArray array]; for (UIColor *color in colors) { [array addObject:(__bridge id)color.CGColor]; } gradientLayer.colors = array; switch (direction) { case GradientLayerDirection_V: { gradientLayer.startPoint = CGPointMake(0.5, 0.0); // 顶部中间 gradientLayer.endPoint = CGPointMake(0.5, 1.0); // 底部中间 } break; case GradientLayerDirection_H: { gradientLayer.startPoint = CGPointMake(0, 0.5); // 顶部中间 gradientLayer.endPoint = CGPointMake(1, 0.5); // 底部中间 } break; } // 自定义圆角路径(比如只圆左上和右下角) UIBezierPath *roundedPath = [UIBezierPath bezierPathWithRoundedRect:gradientLayer.bounds byRoundingCorners:corners cornerRadii:CGSizeMake(cornerRadii, cornerRadii)]; // 创建 shape layer 作为 mask CAShapeLayer *maskLayer = [CAShapeLayer layer]; maskLayer.path = roundedPath.CGPath; // 设置 mask gradientLayer.mask = maskLayer; // 添加到 view 上 [self.layer insertSublayer:gradientLayer atIndex:0]; } - (void)configShadow:(CGFloat)cornerRadius shadowColor:(UIColor *)shadowColor size:(CGSize)size { self.layer.shadowColor = shadowColor.CGColor; // 阴影颜色 self.layer.shadowOpacity = 0.3; // 阴影透明度(0~1) self.layer.shadowOffset = CGSizeMake(0, 2); // 阴影偏移(x, y) self.layer.shadowRadius = 3; // 模糊半径 self.layer.masksToBounds = NO; // 必须为 NO,阴影才能显示在边界外 self.layer.cornerRadius = cornerRadius; CGRect rect = CGRectMake(0, 0, size.width, size.height); self.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:cornerRadius].CGPath; } @end