神刀安全网

iOS按钮颜色渐变代码实现

今天第一天上班,也是第一次在简书上写文章,记录一下工作中遇到的问题,方便今后查阅。
主要遇到的问题就是在项目中要自定义按钮的渐变色,为了缩小工程,美术小姐姐也没给图片,只能用代码来实现了。了解了一下按钮的结构后,实现渐变的主要功能就是把渐变颜色设置成背景图片。
首先设置渐变颜色。用到的是CAGradientLayer类,代码如下,因为项目中多处用到,所以就封装成了函数,写在了UIcolor的类拓展里,一共有2种方式,左右和上下渐变,默认是从中间开始,可以自己调节的。

//左右渐变     public class func setGradualLeftToRightColor(view:UIView,fromColor:UIColor,toCololr:UIColor,loactions:[NSNumber]=[0.5,0.0]) -> CAGradientLayer {         let gradientLayer = CAGradientLayer()         gradientLayer.frame = view.bounds         //  创建渐变色数组,需要转换为CGColor颜色         gradientLayer.colors = [fromColor.cgColor,toCololr.cgColor]         //  设置渐变颜色方向,左上点为(0,0), 右下点为(1,1)         gradientLayer.startPoint = CGPoint(x: 0, y: 0)         gradientLayer.endPoint =  CGPoint(x: 1, y: 0)         //  设置颜色变化点,取值范围 0.0~1.0         gradientLayer.locations = loactions         return gradientLayer     }  public class func setGradualChangingColor(view:UIView,fromColor:UIColor,toCololr:UIColor,loactions:[NSNumber]=[0,0.5]) -> CAGradientLayer {         let gradientLayer = CAGradientLayer()         gradientLayer.frame = view.bounds         //  创建渐变色数组,需要转换为CGColor颜色         gradientLayer.colors = [fromColor.cgColor,toCololr.cgColor]         //  设置渐变颜色方向,左上点为(0,0), 右下点为(1,1)         gradientLayer.startPoint = CGPoint(x: 0, y: 0)         gradientLayer.endPoint =  CGPoint(x: 0, y: 1)         //  设置颜色变化点,取值范围 0.0~1.0         gradientLayer.locations = loactions         return gradientLayer     } 

颜色设置好之后,创建button,设置背景图片。

            let btn = UIButton(frame:CGRect(x: 20,y: 25,width: APP_SCREEN_WIDTH-20*2,height: 44*APP_SCALE))             //创建一个视图             let btnBg = UIView(frame:createAnchor_btn.bounds)              let layer = UIColor.setGradualLeftToRightColor(view: createAnchor_btn, fromColor: UIColor.hexStringToColor("#FD6DD1"), toCololr: UIColor.hexStringToColor("#F83C8C"),loactions: [0.6,0.0])             btnBg.layer.addSublayer(layer)             //将视图转化成按钮的BackgroundImage             btn.setBackgroundImage(btnBg.convertToImage(), for: UIControlState())             btn.setTitleColor(APP_COLOR_WHITE, for: UIControlState())             btn.setTitleColor(AppAlphaColor(APP_COLOR_WHITE, alpha: 0.5), for: UIControlState.highlighted)             btn.titleLabel?.font = APP_TEXT_FONT_16             btn.setTitle(localized("user_create_anchor"), for: UIControlState())             self.view.addSubview(createAnchor_btn) 

上面将视图转化为image的方法在工程里也常常用到,所以也将其封装起来了。写在了UIview的类拓展里。YYKit类库封装了这个方法,可以直接拿来用。

 //UIView 转化为 UIImage     func convertToImage() -> UIImage{         UIGraphicsBeginImageContextWithOptions(self.bounds.size, false, UIScreen.main.scale)         var image = UIImage()         if let context = UIGraphicsGetCurrentContext(){             self.layer.render(in: context)             image = UIGraphicsGetImageFromCurrentImageContext()!         }         UIGraphicsEndImageContext()         return image     } 

以上就是实现了按钮颜色渐变的功能。与君共勉,希望在iOS开发的道路上越走越远,越飞越高。

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » iOS按钮颜色渐变代码实现

分享到:更多 ()