Swift错误: 无法将UIColor类型的值分配给类型CGColor。

23

我的视图中有两个输入框,loginEmailInputloginPasswordInput

我想要改变边框的颜色。在ViewController.swift中我的代码如下:

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var loginPasswordInput: UITextField!
    @IBOutlet weak var loginEmailInput: UITextField!

    let borderColor : UIColor = UIColor(red:0.39, green:0.76, blue:0.37, alpha:1)
    loginEmailInput.layer.borderColor = borderColor
    loginPasswordInput.layer.borderColor = borderColor

    override func viewDidLoad() {
        super.viewDidLoad()

        //etc....

然而,这两行都显示了一个错误:

loginEmailInput.layer.borderColor = borderColor
loginPasswordInput.layer.borderColor = borderColor

错误是:

无法将 UIColor 类型的值分配给 CGColor 类型

我应该如何解决这个问题?


6
layer.borderColor = borderColor.CGColor 可以翻译为“图层边框颜色等于边框颜色的CGColor”。在 UIColor 中不需要显式类型注释。但更重要的是,那两行设置边框颜色的代码需要放在一个方法中,而不是单独存在于类中。 - Hamish
4个回答

72

对于CALayer,请以其为例使用:

UIColor.blue.cgColor

通常,图层/CALayers使用CG(核心图形)颜色。对于视图的背景之类的内容,您可以使用view.backgroundColor = .blue之类的东西。UIColor是UIKit FrameWork(NSObject)的一部分,CG是Core Graphic(CF / Core Foundation Library)的一部分。

注意:对于非常旧版本的Swift(Swift 1和2),您需要使用:

UIColor.blueColor().CGColor

1
有几个小问题 - “Core Graphics”更常用复数形式,而CF实际上是来自Core _Foundation_库的类前缀。 - Craig Otis
@CraigOtis 当然,我已经更新了我的答案,请告诉我您是否有更多建议。 - Akshansh Thakur
9
Swift 3: UIColor.black.cgColor翻译:UIColor.black.cgColor 是 Swift 3 中表示黑色的颜色对象。 - Franck
2
Swift 3,使用自定义颜色:UIColor(red:255/255, green: 144/255, blue: 0/255, alpha: 1).cgColor - bbenis

1
imageView.layer.borderColor = UIColor.black.cgColor

0
我们可以通过将UIColor转换为CIColor来定义颜色。使用以下代码:
imageView.layer.borderColor = UIColor(ciColor: .blue)

2
请解释你的代码,它是做什么的,它如何回答这个问题。 - eshirvana

0

在我的情况下: 使用自定义颜色:

   view.layer.borderColor = Colors.Mountain.color.cgColor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接