swift - 无法将 CGFloat 类型的值分配给 CGFloat 类型的值

标签 swift casting calayer

尝试设置 CAShapeLayer 的 zPosition 时出现错误。这是代码:

self.view.layer.sublayers[l].zPosition = CGFloat(1)

出于某种原因,我收到此错误:无法将 CGFloat 类型的值分配给 CGFloat 类型的值!。出于某种原因,错误是可选的。我在网上看到其他示例没有任何转换 (zPosition = 1),所以我不知道这里的问题是什么。

谢谢!

最佳答案

CALayersublayers 属性定义为[AnyObject]!。当您下标为 ...sublayers[l] 时,您会得到一个 AnyObject,可以肯定的是,它没有 zPosition 的可设置属性>。您需要将返回的 AnyObject 向下转换为 CALayer,例如

if let layer = self.view.layer.sublayers[l] as? CALayer {
  layer.zPosition = CGFloat(1)
}

此外,您不需要解包 sublayers(在下标之前),因为它是用 ! 声明的,因此会隐式地自动解包。

最后,您引用的错误消息似乎是错误复制的,因为它毫无意义。

关于swift - 无法将 CGFloat 类型的值分配给 CGFloat 类型的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29707071/

相关文章:

swift - Swift 中 IIFE 的类型推断

arrays - 如何在 Delphi 中正确地转换和传递参数

performance - 为什么我的 CAOpenGLLayer 更新速度比我以前的 NSOpenGLView 慢?

ios - 如何快速创建具有不可点击矩形区域的自定义表单按钮?

objective-c - 在 Swift 中用 return 模拟宏

c - 为什么填充结构的辅助宏需要显式转换?

ios - 如何使用 CABasicAnimations 和自动布局替换 CGAffineTransform 缩放和 alpha 动画?

iphone - 更改所选 CAShapeLayer 的填充颜色

ios - Swift:如何实现用户定义的运行时属性

c# - 如何将 string.Format 应用于 SQL 结果?