2016-04-03 40 views
1

我得到這個的UIColor:怎樣類型的UIColor的值轉換爲UINT在迅速

UIColor(red: 0.2, green: 0.4118, blue: 0.1176, alpha: 1.0) 

,我需要在UINT轉換。我怎樣才能做到這一點?

編輯:

func showEmailMessage(advice : String) 
{ 
    _ = SCLAlertView().showSuccess("Congratulation", subTitle: advice, closeButtonTitle: "Ok", duration : 10, colorStyle: 0x33691e, colorTextButton: 0xFFFFFF) 
} 

顏色樣式字段要UINT

+1

UInt應該如何表示顏色?你期待什麼結果?這個'UInt'將如何使用? – vacawama

+0

供將來參考:http://stackoverflow.com/questions/33300091/how-the-getred-works-properly-in-uicolor-object-in-ios-9-swift –

回答

2

您可以使用UIColor.getRed(...)方法來提取顏色CGFloat,此後您CGFloat三件套的值轉換爲適當的位位置的UInt32變量。

// Example: use color triplet CC6699 "=" {204, 102, 153} (RGB triplet) 
let color = UIColor(red: 204.0/255.0, green: 102.0/255.0, blue: 153.0/255.0, alpha: 1.0) 

// read colors to CGFloats and convert and position to proper bit positions in UInt32 
var red: CGFloat = 0, green: CGFloat = 0, blue: CGFloat = 0, alpha: CGFloat = 0 
if color.getRed(&red, green: &green, blue: &blue, alpha: &alpha) { 

    var colorAsUInt : UInt32 = 0 

    colorAsUInt += UInt32(red * 255.0) << 16 + 
        UInt32(green * 255.0) << 8 + 
        UInt32(blue * 255.0) 

    colorAsUInt == 0xCC6699 // true 
} 

有關詳細信息,請參閱Language Guide - Advanced Operators除其他有價值的東西外,還包含一個專門用於位移w.r.t RGB三元組的示例。

+0

完美!有效 !我只需要返回UInt而不是UInt 32!非常感謝! –

+0

@MarcoCastano樂意幫忙。使用'UInt'(也就是說,對於新設備,與'UInt64'相同的尺寸)而不是'UInt32',上述方法自然可以直接應用,您只需要額外使用未填充的位填充。 – dfri