2017-01-10 69 views
0

我聲明UIColors在擴展名:UIColor文件,但我不斷地得到像「實例成員'紅'錯誤不能用於類型'UIColor',當我宣佈它已經在擴展文件,我將列出錯誤的圖片,下面的代碼。實例成員不能使用時,它已經宣佈

Error image

擴展的UIColor文件

import Foundation 
import UIKit 

    extension UIColor { 

var red: CGFloat { 
    get { 
     let components = self.cgColor.components 
     return components![0] 
    } 
} 

var green: CGFloat { 
    get { 
     let components = self.cgColor.components 
     return components![1] 
    } 
} 

var blue: CGFloat { 
    get { 
     let components = self.cgColor.components 
     return components![2] 
    } 
} 

var alpha: CGFloat { 
    get { 
     return self.cgColor.alpha 
    } 
} 

func alpha(_ alpha: CGFloat) -> UIColor { 
    return UIColor(red: self.red, green: self.green, blue: self.blue, alpha: alpha) 
} 

func white(_ scale: CGFloat) -> UIColor { 
    return UIColor(
     red: self.red + (1.0 - self.red) * scale, 
     green: self.green + (1.0 - self.green) * scale, 
     blue: self.blue + (1.0 - self.blue) * scale, 
     alpha: 1.0 
    ) 
} 
} 

斯威夫特文件,我想用一種顏色。

var color: UIColor = UIColor.red { 
    didSet { 
     setup() 
    } 
} 

回答

2

您在具有相同名稱的類變量分機衝突添加的red,​​和blue屬性名稱。重命名您的擴展中的屬性。

僅供參考 - 您的擴展中無需使用您的alpha方法。 UIColor已經提供了相同的方法(名爲withAlphaComponent)。

而你的執行red,​​和blue可能會崩潰。假定CGColor總是有3個組件,並且您認爲它是RGB顏色。這兩種情況都不是真的。

+0

爲了使它完成,你應該提到他的白色方法也沒用,因爲UIColor已經有了一個特定於這個目的的初始化函數init(white:alpha:)'https://developer.apple.com/reference/uikit/ uicolor/1621944-init –

+1

@LeoDabus我一開始也認爲,但後來我仔細看了看他們的「白色」方法。這絕對是完全不同的。這一個正在改變當前的顏色,而不僅僅是創造一片灰色。 – rmaddy

相關問題