zoukankan      html  css  js  c++  java
  • iOS 之渐变颜色

    效果如下:

    实现代码如下:

    .H

    #import <UIKit/UIKit.h>
    
    /**
     渐变方式
    
     - IHGradientChangeDirectionLevel:              水平渐变
     - IHGradientChangeDirectionVertical:           竖直渐变
     - IHGradientChangeDirectionUpwardDiagonalLine: 向下对角线渐变
     - IHGradientChangeDirectionDownDiagonalLine:   向上对角线渐变
     */
    typedef NS_ENUM(NSInteger, IHGradientChangeDirection) {
        IHGradientChangeDirectionLevel,
        IHGradientChangeDirectionVertical,
        IHGradientChangeDirectionUpwardDiagonalLine,
        IHGradientChangeDirectionDownDiagonalLine,
    };
    
    @interface UIColor (IHGradientChange)
    
    /**
     创建渐变颜色
    
     @param size       渐变的size
     @param direction  渐变方式
     @param startcolor 开始颜色
     @param endColor   结束颜色
    
     @return 创建的渐变颜色
     */
    + (instancetype)bm_colorGradientChangeWithSize:(CGSize)size
                                         direction:(IHGradientChangeDirection)direction
                                        startColor:(UIColor *)startcolor
                                          endColor:(UIColor *)endColor;
    
    
    // 其他曲线渐变暂不考虑
    
    @end

    .M:

    #import "UIColor+IHGradientChange.h"
    
    @implementation UIColor (IHGradientChange)
    
    + (instancetype)bm_colorGradientChangeWithSize:(CGSize)size
                                         direction:(IHGradientChangeDirection)direction
                                        startColor:(UIColor *)startcolor
                                          endColor:(UIColor *)endColor {
        
        if (CGSizeEqualToSize(size, CGSizeZero) || !startcolor || !endColor) {
            return nil;
        }
        
        CAGradientLayer *gradientLayer = [CAGradientLayer layer];
        gradientLayer.frame = CGRectMake(0, 0, size.width, size.height);
    
        CGPoint startPoint = CGPointZero;
        if (direction == IHGradientChangeDirectionDownDiagonalLine) {
            startPoint = CGPointMake(0.0, 1.0);
        }
        gradientLayer.startPoint = startPoint;
        
        CGPoint endPoint = CGPointZero;
        switch (direction) {
            case IHGradientChangeDirectionLevel:
                endPoint = CGPointMake(1.0, 0.0);
                break;
            case IHGradientChangeDirectionVertical:
                endPoint = CGPointMake(0.0, 1.0);
                break;
            case IHGradientChangeDirectionUpwardDiagonalLine:
                endPoint = CGPointMake(1.0, 1.0);
                break;
            case IHGradientChangeDirectionDownDiagonalLine:
                endPoint = CGPointMake(1.0, 0.0);
                break;
            default:
                break;
        }
        gradientLayer.endPoint = endPoint;
        
        gradientLayer.colors = @[(__bridge id)startcolor.CGColor, (__bridge id)endColor.CGColor];
        UIGraphicsBeginImageContext(size);
        [gradientLayer renderInContext:UIGraphicsGetCurrentContext()];
        UIImage*image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return [UIColor colorWithPatternImage:image];
    }
    @end

    github源码

    我的blog

    https://liangdahong.com/
  • 相关阅读:
    Spring MVC-静态页面示例(转载实践)
    Spring MVC-页面重定向示例(转载实践)
    Spring中获取Session的方法汇总
    Spring Boot项目@RestController使用重定向redirect
    MySQL Workbench常用快捷键及修改快捷键的方法
    Eclipse安装Jetty插件(Web容器)
    Java EE: XML Schemas for Java EE Deployment Descriptors(Java Web的web.xml头web-app标签上的XML模式)
    Ubuntu 16.04 GNOME在桌面左侧添加启动器(Launcher)
    Ubuntu 16.04 GNOME添加桌面图标/在桌面上显示图标
    Ubuntu 16.04修改显示字体大小(包括GNOME/Unity)
  • 原文地址:https://www.cnblogs.com/dahongliang/p/6072316.html
Copyright © 2011-2022 走看看