如何在 Swift 3.0 中将字符串转换为 UIColor?

2024-01-09

我正在尝试将使用预定义颜色列表的现有程序从 Objective-C 转换为 Swift。 原始代码使用Selector来提取一个UIColor基于它的名称表示为NSString

#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

-(UIColor *)getColor:(NSString*)colorName
{
    SEL selColor = NSSelectorFromString(colorName);
    NSString *errorMessage = [NSString stringWithFormat:@"Invalid color name: %@ !!!", colorName];
    NSAssert([UIColor respondsToSelector:selColor] == YES, errorMessage);
    UIColor *mycolor = [UIColor performSelector:selColor];
    return mycolor;
}

+ (instancetype)turquoiseColor {
    return UIColorFromRGB(0x40E0D0);
}

+ (instancetype)mediumTurquoiseColor {
    return UIColorFromRGB(0x48D1CC);
}

然而,我一直无法弄清楚如何使用 Swift 3.0 实现相同的功能,或者使用 Selector 是否是最好的技术。

func UIColorFromRGB(_ rgbValue: UInt) -> UIColor {
    return UIColor(
        red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,
        green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,
        blue: CGFloat(rgbValue & 0x0000FF) / 255.0,
        alpha: CGFloat(1.0)
    )
}

extension UIColor {
    public class var turquoise: UIColor { return UIColorFromRGB(0x40E0D0) }
}

extension UIColor {
    public class var mediumTurquoise: UIColor { return UIColorFromRGB(0x48D1CC) }
}

let myColor: UIColor = .turquoise

let name: String = "turquoise"
let colorName = "UIColor.\(name)"
let selector: Selector = NSSelectorFromString(colorName)

let colorSelected: UIColor = UIColor.perform(selector!)

错误: !没有“执行”候选者产生预期的上下文结果类型“UIColor”


您可以创建一个默认值为 String 的 Color 枚举:

 enum Color: String {
   case red
   case blue
   case green

    var create: UIColor {
       switch self {
          case .red:
            return UIColor.red
        case .blue:
            return UIColor.blue
        case .green:
            return UIColor.green
       }
    }
  }

由于它具有 String 的默认值,因此您可以使用字符串初始化枚举:

  guard let color = Color(rawValue: "red") else { "handle invalid color error"; return } 

 let colorSelected = color.create //// colorSelected is now UIColor.red
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Swift 3.0 中将字符串转换为 UIColor? 的相关文章

  • 如何在 iOS 中以编程方式在 UITableViewCells 中添加图像

    我需要添加不同的图像UITableViewCells以编程方式 我怎样才能做到这一点 我正在尝试一些代码 但图像不显示在UITableViewCells 这是我下面的代码 void viewDidLoad arrImages NSMutab
  • iPad 3 renderInContext 缓慢 - 渲染性能不佳

    我试图从用户可以绘画的视图中获取图像 或添加一些其他视图 到目前为止 iPad1 和 2 一切正常 但在 iPad3 上它却像狗一样跑起来 我只是使用图层 renderInContext 方法 if UIScreen mainScreen
  • 在 wkwebview 中启用摄像头和麦克风访问

    我有一个针对移动设备优化的网络应用程序 它利用getUserMedia访问网络摄像头和麦克风资源 我正在将这个应用程序包装在WKWebView因为我想提供原生应用程序体验 我知道 iOS 不允许通过浏览器访问相机 但是有什么方法可以使用本机
  • iPad 的自适应布局

    我正在关注这篇文章在 ios 中构建自适应布局为 iOS 8 构建自适应用户界面 http www sitepoint com building adaptive user interfaces ios 8 它在 iPhone 上运行良好
  • 查找 NSString 中子字符串的所有位置(不仅仅是第一个)

    有一个子串在字符串中出现多次 我用rangeOfString 不过好像只能找到第一个位置 如何找到子字符串的所有位置 NSString subString1 NSString subString2 n NSRange range1 newr
  • Swift - 带循环的多个链 http 请求

    两天以来 我感觉我正在搜索整个网络来解决多个 http 请求的问题 所以我的工作流程如下所示 将图像上传到服务器 响应 XML 格式和任务 ID 使用任务 ID 向服务器发出 GET 请求 以检查该任务的状态 响应 XML 格式 其中状态可
  • UIPopViewController 不工作

    我有一个 xib 文件 其中有 h 和 m 链接 在 xib 中有一个带有 textView 的 UIView 我想要对该视图执行的操作是 当您单击按钮时将其作为 UIPopViewController 打开 这是我的代码 IBAction
  • 如何在flutter插件中调试iOS原生代码?

    我想知道如何在插件中调试 flutter iOS 代码 我可以打开每当您创建插件时生成的示例应用程序 但我将插件代码视为二进制框架 因此我无法调试它 对于 android 这相当简单 我只需打开 A S 中的 android 文件夹即可 插
  • iOS Swift 3 以编程方式将文件复制到 iCloud Drive

    在我的我有文档下载选项 当用户从我的应用程序下载文档时 我需要将其存储到已安装在用户手机中的用户 iCloud Drive 我已在 Web 和 Xcode 中配置了 iCloud 但问题是我无法将文件正确复制到 iCloud Drive 文
  • 如何在 UIImagePickerController 捕获图像的瞬间获取当前位置?

    我研究了如何从返回的图像中获取位置数据UIImagePickerController相机 但是 我认为最简单的方法是获取当前位置CLLocationManager此刻UIImagePickerController捕获图像 有办法做到这一点吗
  • NSString 到 TimeInterval

    我有一个 NSString 的格式00 00 00 00最初获得自 dateFormatter setDateFormat HH mm ss SS 我如何获取该字符串并将其转换为 TimeInterval 如果您 100 绝对肯定这种格式永
  • UITableView 部分始终保持在视图内

    我有一个包含 3 个部分的 UITableView 第 1 节 该部分的标题是 Players 内容恰好是 1 个单元格 包含 1 4 个玩家姓名的水平列表 第 2 节 该部分的标题是 回合 内容是 X 个单元格 每个单元格包含每个玩家在第
  • Crashlytics 和答案套件的问题

    我在我的应用程序中使用 Crashlytics 来跟踪崩溃 并使用 Answers 工具包来处理自定义事件 我正在使用 pod 文件将框架集成到我的项目中 但是在添加两个 pod 时出现链接错误 pod Fabric pod Answers
  • 带有 HTML 的 UIActivityViewController

    当我将包含 HTML 内容的字符串作为数组元素传递给UIActivityViewController initWithActivityItems方法中 它不会在选定的 共享 控制器中将其呈现为 HTML 而是呈现 HTML 源 即标记而不是
  • 如何阻止 Xamarin 在启用位码的情况下构建我的应用程序?

    在我的 iOS 版本的配置中 没有禁用位码的选项 在 Xcode 中可以设置 ENABLE BITCODE NO 我需要这个 因为我的链接框架不是用位码构建的 而且现在苹果不再允许半位码编译的应用程序 In your csproj对于您的
  • 使用 Xcode 资产目录缓存 UIImage

    我们都知道UIImage神秘的幕后缓存机制imageNamed 方法 在苹果的UIImage 类参考 https developer apple com library IOS documentation UIKit Reference U
  • Sqlite3 查询在 iOS 8.2 下变得非常慢

    我制作了一个可以在应用程序内使用 sqlite 数据库的应用程序 在 iOS 8 2 之前 它工作得很好 但更新后 查询方法的工作速度慢了大约 100 倍 我试图查找有关此问题的信息 但尚未找到任何信息 有人有同样的经历吗 这是我的方法 到
  • Cordova 构建 iOS 应用程序并打开模拟器,但未安装

    我正在 MacOS 上用 Cordova 制作一个 iOS 应用程序 当我跑步时cordova emulate ios该应用程序会构建并打开 iPhone X iOS 11 4 的模拟器 但它从未在模拟器中安装该应用程序 它仅显示模拟器主屏
  • iPhone 应用程序在 iPhone 4 尺寸下运行,更新后出现黑条

    此前 该应用程序支持 iPhone 5s SE 屏幕和 iPhone 6 8 屏幕 不包括加大尺寸 这是使用启动图像完成的 因此 在 Plus 尺寸设备和 iPhone X 设备上 它会在应用程序上方和下方显示黑条 然后我们发布了一个更新
  • 如何在 Swift 中的标签上制作阴影效果?

    我不知道如何在标签上编写阴影代码 我有一个会改变的乐谱标签 因此无法仅对带有阴影的文本进行Photoshop处理 我需要对其进行编码 以便它始终自动在文本后面有一个模糊的阴影 有人可以举一些例子或提供帮助吗 人们说这是重复的 重复 是关于

随机推荐

  • ViewModel 中的 ASP.NET MVC SelectList

    我正在使用 ASP NET MVC 5 但这很可能也适用于以前的版本 提出这个问题的最佳方法是向您展示代码 这是视图模型 public class PersonCreateViewModel public SelectList cities
  • 有没有办法将 UNC 路径映射到 Windows 2003 上的本地文件夹?

    我知道我可以将 UNC 路径映射到本地驱动器号 但是 我想知道是否有办法将 UNC 路径映射到本地文件夹 我有一个程序 其中硬编码到程序中的特定文件夹 我想尝试创建一个映射到 UNC 路径的同名文件夹 以便可以从网络共享访问数据 这可行吗
  • R 中的跟踪函数

    我想跟踪一个函数 以便它在调用时打印它的所有参数 当它返回结果时 它会打印返回值和参数 函数跟踪允许定义在进入和退出函数调用时要执行的操作 是否有一个函数返回函数内的参数列表 是否有一种方法无需执行多个分支中的每个分支即可获取结果值 每个分
  • 查找矩阵中的面积数

    假设我有一个像这样的矩阵 1 1 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 1 如果两个 1 彼此相邻 仅水平和垂直 因此属于同一区域 我需要找出矩阵中有多少个这些区域 您可以看到该矩阵中有两个区域为 1 我已经尝试解决这
  • 当是公共存储库时,什么应该包含 .gitignore 文件?

    我一直在学习有关 gitignore 文件的所有内容 但有一个问题我想解决 gitignore 应包含您要忽略的所有文件 因此 您应该忽略操作系统 您正在使用的 IDE 生成的文件 当存储库位于 Github 上并且人们可以克隆它并推送更改
  • Sass 数组中的随机颜色[重复]

    这个问题在这里已经有答案了 我想指定一个颜色数组 然后将颜色随机应用到列表中 到目前为止 我已经做到了颜色会按顺序循环 我怎样才能随机化它 这是到目前为止的 Sass 代码 colors red orange yellow green bl
  • 根据异常类型调用ContainerStoppingErrorHandler

    我使用的是 spring kafka 版本 2 2 4 Release 和 Kafka 版本 2 11 我在用容器停止错误处理程序作为我的错误处理程序 每当出现异常时 就会调用此方法并停止容器 现在 我需要根据异常类型停止容器 如果发生某些
  • 如何检测特定区域的触摸

    目前我看到触摸事件将向我显示发生触摸的 UIView 但是 如果我需要检测某些非矩形形状 例如圆形 的触摸该怎么办 我该如何去做这样的事情呢 基本上 只有当用户触摸不可见的圆形区域内的某处时 我才想做一些事情 感谢任何帮助 指导 TIA 你
  • 了解 PHP/Laravel 中的构造函数、$this 关键字和控制器类

    我知道以前已经对此进行过介绍 但我正在努力解决如何将其应用到我的代码中 我正在 Laravel 中开发一个 PHP 应用程序 但希望使我的代码更加模块化和可测试 这意味着将我的逻辑从我的重型控制器中分离出来 并将它们分离到单独的文件中 并从
  • WPF 中的下划线标签,使用样式

    我有以下风格
  • JavaScript 和非常长的字符串

    我在使用以下代码时遇到问题 function showTableData var tableArray var x 0 var theHTML for i 0 i lt 7032 i if x 0 theHTML tr th class s
  • 链接到不带 .lib 的 .dll 文件

    我需要将一些Delphi代码重写为C 并且我们需要链接到动态库TMLComm2004 dll 事实证明我们没有 lib文件 因此我们决定使用以下命令行生成它 dumpbin EXPORTS C Users fayard Desktop TM
  • 如何从 Java 验证 HTML?

    从 Java 验证 HTML 的快速而简单的方法是什么 我正在寻找一个开源 PD 类 或一组类 来描述 100 多个 HTML 标签的各种属性 例如 标签是可选的吗 空的 省略其结束标签是否合法 该标签还可以包含哪些其他标签 如果有 哪些属
  • 所有 JPEG 文件都是 JFIF 吗?

    Active Directory 可以按照 JPEG 文件交换格式 JFIF 存储图像jpegPhoto 属性定义 http msdn microsoft com en us library ms676813 VS 85 aspx 我想使用
  • 如何从 Catch 块返回错误消息。现在返回空

    下面给出了我的 ApiKey 验证示例代码 我使用的是 MVC4 Web api RC public class ApiKeyFilter ActionFilterAttribute public override void OnActio
  • 如何验证关联的模型ID?

    我有一个学生和一个课程模型 学生属于课程 课程有很多学生 class Student lt ActiveRecord Base attr accessible course id name password status studentID
  • Rails:使用现有数据更改现有列的数据类型的影响

    我可能在错误的地方问这个问题 所以如果我是这样的话 请放轻松并为我指出正确的方向 我无法理解使用 Rails 中的现有数据更改现有表中现有列的数据类型将如何影响我正在开发的任何应用程序 如果我有一个名为的布尔列football The fo
  • 通过用户 ID 查询 Google Analytics

    有没有办法使用查询结果核心报告 API v3 https developers google com analytics devguides reporting core v3 并通过以下方式过滤这些结果User ID https deve
  • 在哪里可以找到 Microsoft 应用程序的应用程序 ID URI?

    我正在尝试以我注册的应用程序身份登录 并授予以下权限 Azure 门户 gt 应用程序注册 gt 应用程序注册 预览 gt 我的应用程序名称 API 权限 根据本文档 https learn microsoft com en us grap
  • 如何在 Swift 3.0 中将字符串转换为 UIColor?

    我正在尝试将使用预定义颜色列表的现有程序从 Objective C 转换为 Swift 原始代码使用Selector来提取一个UIColor基于它的名称表示为NSString define UIColorFromRGB rgbValue U