swift5.3 UIColor使用十六进制颜色的方法实例

本文环境

  • Xcode 12
  • Swift 5.3
  • iOS 13

UI 给出的颜色往往都是十六进制的,如 #1a1a1a 等,但是我们在 iOS中是不能直接使用的,查询了一些代码,发现比较老旧,这里给出一个改进版本

使用 Extension 扩展

新建一个 swift 文件

比如我的 string.swift ,复制以下代码

//
// String.swift
// bestWhiteNoise
//
// Created by 袁超 on 2020/10/10.
//

import Foundation
import UIKit

extension String {
 /// 十六进制字符串颜色转为UIColor
 /// - Parameter alpha: 透明度
 func uicolor(alpha: CGFloat = 1.0) -> UIColor {
  // 存储转换后的数值
  var red: UInt64 = 0, green: UInt64 = 0, blue: UInt64 = 0
  var hex = self
  // 如果传入的十六进制颜色有前缀,去掉前缀
  if hex.hasPrefix("0x") || hex.hasPrefix("0X") {
   hex = String(hex[hex.index(hex.startIndex, offsetBy: 2)...])
  } else if hex.hasPrefix("#") {
   hex = String(hex[hex.index(hex.startIndex, offsetBy: 1)...])
  }
  // 如果传入的字符数量不足6位按照后边都为0处理,当然你也可以进行其它操作
  if hex.count < 6 {
   for _ in 0..<6-hex.count {
    hex += "0"
   }
  }

  // 分别进行转换
  // 红
  Scanner(string: String(hex[..<hex.index(hex.startIndex, offsetBy: 2)])).scanHexInt64(&red)
  // 绿
  Scanner(string: String(hex[hex.index(hex.startIndex, offsetBy: 2)..<hex.index(hex.startIndex, offsetBy: 4)])).scanHexInt64(&green)
  // 蓝
  Scanner(string: String(hex[hex.index(startIndex, offsetBy: 4)...])).scanHexInt64(&blue)

  return UIColor(red: CGFloat(red)/255.0, green: CGFloat(green)/255.0, blue: CGFloat(blue)/255.0, alpha: alpha)
 }
}

使用

比如 UI 给的颜色是 #5188e1, 那么我们直接使用字符的扩展函数即可

"5188e1".uicolor()

如设置 TabBarItem 的字体颜色

item.setTitleTextAttributes([NSAttributedString.Key.foregroundColor: "5188e1".uicolor()], for: .selected)

uicolor 函数也是在网上找到的,之前的函数在 iOS 13 中,scanHexInt34 方法被废弃,故此方法适配了 iOS 13

总结

到此这篇关于swift5.3 UIColor使用十六进制颜色的文章就介绍到这了,更多相关swift5.3 UIColor用十六进制颜色内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • swift5.3 UIColor使用十六进制颜色的方法实例

    本文环境 Xcode 12 Swift 5.3 iOS 13 UI 给出的颜色往往都是十六进制的,如 #1a1a1a 等,但是我们在 iOS中是不能直接使用的,查询了一些代码,发现比较老旧,这里给出一个改进版本 使用 Extension 扩展 新建一个 swift 文件 比如我的 string.swift ,复制以下代码 // // String.swift // bestWhiteNoise // // Created by 袁超 on 2020/10/10. // import Founda

  • PHP中十六进制颜色与RGB颜色值互转的方法

    16进制的颜色值通常表示为#FFFFFF,当前也有缩减为#FFF,前提是两位两位必需相同,例如#FEFEFE这种,就不能进行缩减.而RGB的颜色格式是由3组0~255的数字构成,分别代表红(Red).绿(Green).蓝(Blue)的色值. 那么,将16进制转换为RGB色值,其实就是分别把#号后面的两位作为一个单位转换成十进制. 代码如下: /** * 将16进制颜色转换为RGB * author www.jb51.net */ function hex2rgb($hexColor){ $col

  • jquery实现将获取的颜色值转换为十六进制形式的方法

    本文实例讲述了jquery实现将获取的颜色值转换为十六进制形式的方法.分享给大家供大家参考.具体分析如下: 大家或许已经注意到了,在谷歌.火狐和IE8以上浏览器中,获取的颜色值是RGB形式,例如rgb(255,255,0),感觉非常不适应,或者在实际编码中不方便使用,这个时候就需要进行转换,下面就提供一段相关转换代码. 具体代码如下: 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf

  • Android编程实现随机生成颜色的方法示例

    本文实例讲述了Android编程实现随机生成颜色的方法.分享给大家供大家参考,具体如下: 网上有个ColorPicker开源项目,选择颜色值.而在这里我想实现的是动态修改一个view的背景色. 开一个线程,每隔1s修改一次view的背景色. 我们知道在Android里设置一个view的背景色有 framelayout.setBackgroundColor(Color.parseColor("#"+arg0.obj)); 就是用android的Color类去解析一个带#号的十六进制色值.

  • jQuery实现导航栏头部菜单项点击后变换颜色的方法

    本文实例讲述了jQuery实现导航栏头部菜单项点击后变换颜色的方法.分享给大家供大家参考,具体如下: 实现效果如下: 话不多说直接上代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> a{ text-decoration: none; color

  • JS实现在页面随时自定义背景颜色的方法

    本文实例讲述了JS实现在页面随时自定义背景颜色的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <HTML> <HEAD> <TITLE>JS实现在页面随时自定义背景颜色</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-- Begin //以下代码将输入框及其所在的层写进窗口. document.writeln('<div align="cente

  • Android编程之图片颜色处理方法

    本文实例讲述了Android编程之图片颜色处理方法.分享给大家供大家参考,具体如下: 你想做到跟美图秀秀一样可以处理自己的照片,美化自己的照片吗?其实你也可以自己做一个这样的软件,废话不多说了,直接上图,上代码了! 效果图如下: 没处理前: 处理之后: MainActivity.java的代码如下: package net.loonggg.test; import android.app.Activity; import android.graphics.Bitmap; import andro

  • Python简单实现TCP包发送十六进制数据的方法

    本文实例讲述了Python简单实现TCP包发送十六进制数据的方法.分享给大家供大家参考,具体如下: 举例: 0x12, 0x34可以直接拼成 "\x12\x34". 客户端代码示例: #-*- encoding: utf-8 -*- import json import socket import sys import binascii reload(sys) sys.setdefaultencoding('utf-8') if __name__=="__main__&quo

  • JS实现点击颜色块切换指定区域背景颜色的方法

    本文实例讲述了JS实现点击颜色块切换指定区域背景颜色的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <html> <head> <title>JS实现点击颜色块切换指定区域的背景颜色</title> </head> <body> <div align="center"> <table bgcolor=#F8F8F8 border="0" width=&q

  • JavaScript实现更改网页背景与字体颜色的方法

    本文实例讲述了JavaScript实现更改网页背景与字体颜色的方法.分享给大家供大家参考.具体分析如下: JavaScript,通过点击按钮更改网页背景与字体的颜色,网页中有N个改变颜色的按钮,点击不同的按钮,网页的字体与背景就会改变成不同的颜色.很简单的JavaScript小程序. 一.基本目标 一打开网页首先提示问候信息"你好" 网页中有N个改变颜色的按钮,其中返回是返回网页的默认颜色,背景是白的,字体是黑的 点击不同的按钮,网页的字体与背景就会改变成不同的颜色. 本来想做出彩虹起

随机推荐