在 Swift 中比较 UIColors 时出现问题

2024-03-14

我需要比较两个 UIColor,但由于某种原因它总是返回 false。我尝试比较使用== and .isEqual(),但它们似乎都不起作用。

//This is a sample of the colors I have created
let blue_color = UIColor(red: 122/255, green: 180/255, blue: 190/255, alpha: 1)


//This is the SpriteNode I have to compare

let square = SKSpriteNode(color: randomColorController(), size: ksquaresize)

randomColorController() 只是一个随机化颜色并返回它的函数,因此在创建 square 时会调用它。

func randomColorController() -> UIColor {
    let random = arc4random_uniform(3) + 1

    switch random {
    case 1:
        let color = blue_color
        return color
    case 2:
        let color = yellow_color
        return color
    case 3:
        let color = yellow_color
        return color
    default:
        let color = UIColor.clearColor()
        return color
    }

然后,根据我创建的正方形的位置,它将检查碰撞,比较我创建的正方形的颜色和我在开始时初始化的颜色。

func checkCollision(currentTime: CFTimeInterval, Square: SKSpriteNode) -> Int{
    let color = Square.color

    print(color.isEqual(blue_color))
    print(color.isEqual(red_color))
    print(color.isEqual(yellow_color))

    if Square.position.y >= 0 && Square.position.y <= 40 {
        if color.isEqual(blue_color) && (Square.position.x < basesize.width) {
                // ADDS 1 POINT TO THE SCORE LABEL
                flag = 1
                points += 1
            } else if color.isEqual(red_color) && (Square.position.x > (basesize.width*2)){
                flag = 1
                points += 1
            } else if color.isEqual(yellow_color) && (Square.position.x < (basesize.width*2)) &&  (Square.position.x > basesize.width) {
                flag = 1
                points += 1
            } else {
                flag = -1
            }
    }

But color.isEqual(blue_color)或任何其他颜色,似乎不起作用。我已经打印了Square.color and blue_color(以及其他),并且它们匹配。但它总会回来false.


extension UIColor {
    func isEqual(color: UIColor?) -> Bool {
        guard let color = color else { return false }

        var red:CGFloat   = 0
        var green:CGFloat = 0
        var blue:CGFloat  = 0
        var alpha:CGFloat = 0
        self.getRed(&red, green: &green, blue: &blue, alpha: &alpha)

        var targetRed:CGFloat   = 0
        var targetGreen:CGFloat = 0
        var targetBlue:CGFloat  = 0
        var targetAlpha:CGFloat = 0
        color.getRed(&targetRed, green: &targetGreen, blue: &targetBlue, alpha: &targetAlpha)

        return (Int(red*255.0) == Int(targetRed*255.0) && Int(green*255.0) == Int(targetGreen*255.0) && Int(blue*255.0) == Int(targetBlue*255.0) && alpha == targetAlpha)
    }
}

我在 swift 3、4 中测试过

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

在 Swift 中比较 UIColors 时出现问题 的相关文章

  • 如何保存 1 个 xcode 项目中的所有构建设置并在其他 xcode 项目上使用它们?

    我使用 xcode 4 5 和 cordova phonegap 来构建我的应用程序 我投入了大量时间来获取适合我的 Xcode 项目的构建设置 并且我想在我正在构建的多个应用程序上重用这些设置 我正在寻找是否有一种快速的方法来导出这些设置
  • 使用 JavaScript 从 URL 变量读取来加载不同的 CSS 样式表

    我试图在我的 WordPress 博客上使用两个不同的样式表 以便在通过 Web 访问页面时使用一个样式表 而在通过我们的 iOS 应用程序访问博客内容时使用另一个样式表 现在 我们将 app true 附加到来自 iOS 应用程序的 UR
  • 在 Swift 3 中单击和双击 UITableViewCell

    我在 TableView Cell 上有故事板 segue 我用它来在单元格单击中传输到另一个 VCdidSelectRowAt方法 现在我双击了TapGestureRecognizer处理手机上的点击问题 问题是 单击时 segue 正在
  • 在 Swift 中将 Int 转换为 UInt32

    我正在制作一个 Tcp 客户端 因此使用CFStreamCreatePairWithSocketToHost它期望第二个参数为 UInt32 这是我正在尝试做的事情的示例 func initNetwork IP String Port In
  • 在界面生成器/故事板中设置 UIButton 图像

    我有一个视图控制器 我在故事板中添加了一个圆形矩形按钮 该应用程序运行良好 我还使用故事板将按钮连接到 segue 我正在尝试为此按钮设置一个自定义图像以用于其开和关状态 我如何访问此按钮并设置其属性 在本例中为开和关图像 这是一个屏幕截图
  • 使用 UIActionSheet 更改视图时工具栏项目消失

    当从 a 启动视图时UIActionSheet按钮 通过导航栏后退按钮返回视图后 工具栏虽然仍然可见 但上面没有任何以前的按钮 自从更新到 iOS 6 以来 这个错误就出现了 并且是在模拟器和仅运行 iOS 6 的设备上测试时发生的 如果我
  • 使用 UIImagePickerController 的应用程序在拍照后选择“使用照片”时冻结

    我现在正在开发一个简单的照片和视频捕获应用程序 该应用程序成功地允许用户按下按钮即可拍摄照片或视频 但是 一旦您完成拍摄照片或视频 它就会提供 2 个选项 重新拍摄 和 使用照片 或 使用视频 具体取决于您使用的选项 如果用户点击 重新拍摄
  • iOS 外部附件框架:如何获取特定 MFI 设备的协议字符串

    我正在编写一个 iOS 应用程序 用于与 mini mPlay Drumi MP18B 小型蓝牙扬声器 进行通信 据我所知 showBluetoothAccessoryPickerWithNameFilter仅显示协议字符串添加到 Info
  • Swift 对异步编程有什么语言级别的支持(如果有)?

    当应用程序必须通过不可预测的网络 例如智能手机应用程序 进行通信时 异步编程对于响应式用户界面来说是必须的 用户界面必须保持响应 同时等待结果从互联网上某处的服务器返回 在大多数语言中 应用程序程序员必须实现自己的状态机 可能使用闭包 来响
  • iOS 内存警告

    我正在尝试使用从 Parse 数据库下载的图像填充集合视图 但我收到内存警告 然后偶尔崩溃 有谁知道其他应用程序如何设法呈现这么多图像而不崩溃 有人可以告诉我如何优化我已有的东西吗 这是所有相关代码 https gist github co
  • Swift -boundingBox 导致 EXC_BAD_ACCESS (代码 = 1)

    我正在使用 SceneKit 来显示文本节点 这是我的代码 foo swift extension SCNNode func getNodeSize gt width Float height Float let min max bound
  • iOS 中的等宽字体是什么?

    我想要在我的 iOS 应用程序中为 UILabel 使用等宽字体 不幸的是 我找不到一个 甚至 美国打字机 实际上也不是等宽的 XCode 中可用的等宽字体是什么 iOS 等宽字体 Courier Courier Bold Courier
  • 从 RemoteIO 保存音频的示例?

    我进行了搜索 但没有找到任何从 RemoteIO 音频单元保存音频的好示例或教程 我的设置 使用 MusicPlayer API 我有几个 AUSamplers gt MixerUnit gt RemoteIO 音频播放效果很好 我想添加将
  • 为了支持 iPhone 5 的更长屏幕,需要检查什么? [复制]

    这个问题在这里已经有答案了 可能的重复 iPhone 5屏幕尺寸如何处理 https stackoverflow com questions 12396545 how to deal with iphone 5 screen size iP
  • 如何将十六进制数组转换为 UIImage?

    有几个与使用 P25mi 动态打印图像相关的未解答问题 没有一个得到公认的答案 下面有几个链接 如何将图像转换为位图代码以便在 iPhone 中进行蓝牙打印 https stackoverflow com questions 1383828
  • 在模拟器中运行应用程序时删除本地通知的 iOS 权限警报

    我正在尝试编写验收测试KIF https github com kif framework KIF在一个很早就要求本地通知权限的应用程序上 不幸的是 由于 iOS 模拟器安全原因无法使用 KIF 自动接受 iOS 权限警报 https gi
  • 如果 NSExtensionActivationRule 设置为仅音频,则共享扩展不会出现在有功能的应用程序中

    我正在尝试创建一个共享扩展 用户可以从任何有能力的应用程序上传她的录音 该文档甚至有一个简单的示例 请参阅声明共享或操作扩展支持的数据类型 https developer apple com library content document
  • iOS 发送 iMessage 尽可能简单

    我希望能够以编程方式发送 iMessage 除了调用一个将文本发送到带有消息的号码的函数之外 无需执行任何其他操作 这两个消息都是文本框 我真的很感激一些示例代码 因为我在网上搜索过 但我发现没有任何帮助 这不适用于商业应用程序 仅适用于我
  • 如何使用 afnetworking 在后台上传任务

    我正在尝试使用 AFNetworking 上传大文件 并在应用程序处于后台时继续上传 我可以很好地上传文件 但是当我尝试使用后台配置时 应用程序崩溃并显示以下堆栈跟踪 异常 EXC BAD ACCESS 代码 1 地址 0x8000001f
  • 当设置 setVisibleXRangeMaximum 时,iOS-Charts X 轴值无限重复

    我正在尝试绘制一个图表 其中 x 轴是TimeIntervalY 轴是power consumption 由于每天都会有数据 因此将有太多数据无法显示 因此 我想一次显示 5 个值 我通过设置实现了这一点self chart setVisi

随机推荐

  • 将字段替换为另一个文件中指定的值

    我有一个包含单词之间的映射的文件 我必须引用该文件并将这些单词替换为某些文件中的映射单词 例如 下面的文件具有映射的单词表 1 12 2 4 1 1 12 2 7 12 1 12 2 2 5 1 12 2 4 4 1 12 2 6 67 1
  • rgeos::gCentroid() 和 sf::st_centroid() 返回的值是否不同?

    Question 返回的值是否为rgeos gCentroid https www rdocumentation org packages rgeos versions 0 3 26 topics gCentroid and sf st c
  • Excel VBA 使用 FileSystemObject 列出文件的上次修改日期

    这是我第一次提出问题 所以希望我遵守协议 这是参考 在vba中获取子目录列表 在vba中获取子目录列表 https stackoverflow com questions 9827715 get list of subdirs in vba
  • 如何仅使用 Jackson 将 XML 转换为 JSON?

    我从服务器收到 XML 格式的响应 但我需要以 JSON 格式显示它 有没有办法不用第三方API就可以转换呢 我使用了 Jackson 但为此我需要创建 POJO 服务器的响应是这样的
  • 如何获取数组的所有子集?

    给定一个数组 dog cat mouse 最优雅的创建方式是什么 mouse cat cat mouse dog dog mouse dog cat dog cat mouse 我需要它适用于任何大小的数组 这本质上是一个二进制计数器 其中
  • 谷歌索引页面加载后通过ajax或javascript检索的文本

    几个谷歌问题 1 谷歌是否有机会 看到 使用ajax检索的文本 用户从一系列选择框中进行选择 然后显示数据库中的一些文本 2 如果我使用javascript更改页面标题 在HEAD区域之外 谷歌会索引修改后的标题吗 抱歉 如果这些是琐事问题
  • 如何快速隐藏/显示按钮

    我正在尝试使用 if 语句来使按钮在标签显示某种状态时隐藏 并在标签显示其他内容时出现 标签的名称是 Status 当它显示时 Closed 我希望它隐藏 当它显示时 Open 就会出现 var query3 PFQuery classNa
  • 在自定义 JSF 组件收到 AJAX 更新后调用自定义 JavaScript 代码

    我已经实现了自己的 JSF 组件及其渲染器 并且运行良好 目前 在更改组件树中的某些内容后 我开始重新加载 JavaScript 页面 现在我想在 AJAX 调用传递新数据后更新我的组件 这就像我在单击按钮后向表中插入新行 这会启动 AJA
  • PHP 通过类传递对象?

    重建整个类布局后 我在使用多个类实例时仍然遇到问题 class User public variable public function getUser this gt variable It works return bob class
  • Twilio 通话应用账单扣除

    我们正在制作三种方式调用 Android 应用程序 两个参与者是应用程序用户 第三个参与者是使用 TWILIO 的任何电话号码 我们已经实现了通话功能 我们的通话正在接通 但问题是 我们需要在服务器端知道谁是发起呼叫的用户 以便我们可以从该
  • 如何在本地服务器上安装CloudFoundry

    我知道 CF 是为在多个云服务上运行而设计的 以实现微服务应用程序的统一视图 但是 我想在我的 CentOS 本地服务器上安装并运行 Cloud Foundry 换句话说 我想在一台运行 CF 的服务器上设置我的私有 云 作为基于微服务的应
  • 如何在 tkinter 中滚动到 TreeView 的底部

    我在 Tkinter 中使用树视图模仿了一个表格小部件 并添加一个链接到它的滚动条 问题是因为我的数据是按分钟自动添加到底部的 并且我希望滚动始终滚动到底部 我知道 text see END 在文本小部件中完美工作 但就我而言 树视图小部件
  • Java NoSuchAlgorithmException - SunJSSE、sun.security.ssl.SSLContextImpl$DefaultSSLContext

    背景 我一直在它自己的 Eclipse 项目中使用 Authorize net SDK 一切都运转良好 然后我需要将其添加到我的主项目中 我将依赖项添加到类路径中 并将其复制到我需要的代码块中 它应该有效 Problem 长话短说 代码在我
  • 表单验证失败后重新填充 Codeigniter 中的复选框

    在表单验证不成功将用户返回到同一表单后 我在重新填充一组复选框时遇到问题 下拉菜单和文本输入可以重新填充 但复选框不能 这是复选框的代码片段 td Casual br Romantic br td
  • 如何获取 Xamarin.Forms 中嵌入文件的 URL/路径

    我无法访问 Xamarin Forms 项目中嵌入的 mp4 文件 根据Xamarin Forms 中的文件处理 https learn microsoft com en us xamarin xamarin forms app funda
  • SassError:找不到要导入的样式表。 @use '~@angular/material' 作为垫子;

    我使用 CLI 创建了一个 Angular 项目 我正在使用 SCSS 并且我将 Angular Material 包含在自定义主题 iirc 中 我添加了几个虚拟组件 应用程序仍然构建得很好 然后我需要使用 Angular Materia
  • Swift 3 类型“Any”没有下标成员

    我刚刚将我的项目转换为 Swift 3 我这里有这行代码 let type self data indexPath row Type as String 但现在我得到这个错误 Type Any has no subscript member
  • 不允许使用非成员函数重载 C++ 转换运算符的理由是什么

    C 0x 添加了显式转换运算符 但它们必须始终定义为 Source 类的成员 这同样适用于赋值运算符 它必须在 Target 类上定义 当所需转换的 Source 和 Target 类彼此独立时 Source 都不能定义转换运算符 Targ
  • 如何通过IP地址列出网络计算机上所有已安装的软件?

    我想知道如何获取网络计算机上安装的软件列表 我能够获取本地计算机上安装的软件列表 但不确定如何提取网络内计算机上已安装软件的详细信息 我使用服务器名称或网络计算机的 IP 地址作为唯一的输入 下面是从本地计算机获取已安装软件的详细信息的代码
  • 在 Swift 中比较 UIColors 时出现问题

    我需要比较两个 UIColor 但由于某种原因它总是返回 false 我尝试比较使用 and isEqual 但它们似乎都不起作用 This is a sample of the colors I have created let blue