2011-06-14 88 views
2
// Make half-transparent grey, the background color for the layer 
    UIColor *Light_Grey 
     = [UIColor colorWithRed : 110/255.0 
         green : 110/255.0 
         blue : 110/255.0 
         alpha : 0.5]; 

    // Get a CGColor object with the same color values 
    CGColorRef cgLight_Grey = [Light_Grey CGColor]; 
    [boxLayer setBackgroundColor : cgLight_Grey]; 

    // Create a UIImage 
    UIImage *layerImage = [UIImage imageNamed : @"Test.png"]; 

    // Get the underlying CGImage 
    CGImageRef image = [layerImage CGImage]; 

    // Put the CGImage on the layer 
    [boxLayer setContents : (id) image]; 

考慮上述示例代碼段。關於圖像的Alpha值的問題

UIColor * Light_Grey設置的alpha值爲0.5。我的問題是:無論如何,我可以設置的α值爲CGImageRef圖像

我問這個的原因是,即使boxLayer的的阿爾法值爲0.5,在BoxLayer的頂部設置任何圖像似乎也有1阿爾法默認值,這將覆蓋任何東西位於正下方圖像。

希望有人知道這可以幫助。

回答

1

它看起來可以使用CGImageCreate進行復印,並使用解碼陣列重新縮放α(例如0.0-0.5)

解碼

解碼陣列圖像。如果 不希望重新映射 圖像的顏色值,請將 的NULL傳遞給decode數組。對於圖像的顏色空間 (包括alpha分量)中的每個顏色 分量,解碼陣列提供表示 範圍的上限和下限的一對值 。例如,用於RGB顏色 空間中的源圖像的解碼陣列 將包含六個條目總計, ,其由紅色, 綠色和藍色各一對組成。當圖像被呈現 ,石英使用線性 變換到是 適用於目標顏色空間 你的指定範圍內映射原始 分量值成相對數 。

+0

感謝您的協助和詳細的解答。我實際上希望有一些更簡單的方法來調整Alpha值。似乎可能沒有這樣做的直接方式。將研究CGImageCreate以查看我是否可以設法實現它。 – Stanley 2011-06-14 14:19:36

+0

沒問題。如果我正確地閱讀了文檔,「0.0,1.0,0.0,1.0,0.0,1.0,0.0,0.5」的解碼數組應該能給你想要的效果(儘管我自己沒有嘗試過)。 – holtavolt 2011-06-14 14:24:41