2014-09-30 89 views
0

我有一個程序,其中有一個滑塊,當我向上或向下(左側或右側)移動顏色時,顏色會逐漸變化。可悲的是我無法做到這一點。我的顏色改變是的,但它非常突然!我有單獨的.png文件中的七種顏色的彩虹,當我滾動相應的一個出現。我想知道是否有任何事情可以使顏色變得更好,或者更好地融合到一起,讓交易看起來更順暢。逐漸從一種顏色移動到另一種

謝謝

UPDATE

if(self.slider.value > 7 (
{ 
    [email protected]"red"; 
    //self.imgView.backgroundColor=[UIColor redColor]; 
    // self.imgView.backgroundColor=[UIColor colorWithPatternImage:@"redPicture"]; 
    self.view.backgroundColor=[UIColor colorWithRed:146 green:50 blue:146 alpha:1]; 

} 
+1

而不是圖像,爲什麼不使用某種形狀控件的背景顏色,你可以改變編程? – 2014-09-30 16:58:15

+0

@AndrewArnold我可以以編程方式設置它的背景是的,但我仍然發現移動滑塊使我從顏色跳轉到顏色。可能我所想的是無法完成的。只是想知道 – 2014-09-30 17:00:33

+0

它可能可以,這只是使用圖像不是要走的路。你能設置該區域的RBG值嗎?如果你發佈你的代碼,它也會有所幫助。 – 2014-09-30 17:03:46

回答

1

這將是一個廣義的答案,因爲我不打算寫你的代碼爲你(不是最不重要的,因爲我從來沒有寫過一封信xcode在我的生活中),但是這應該讓你走上正軌。

你想要一個連續的顏色光譜,所以應該立即告訴你蝙蝠使用一系列if語句是錯誤的路要走。相反,您應該通過直接與滑塊值進行數學計算來計算所需的顏色。

你還沒有告訴我你的滑動範圍是什麼,以及它是否是離散的,所以爲了這個答案的目的,我們稱最低值min和最高值max,只是爲了保持一般性。所以你的總範圍是max - min。讓我們沿着這個範圍表示你滑塊的百分比值;我們可以將其計算爲(self.slider.value - min)/(max - min)。 (例如,對於從0到50的滑塊,37滑塊值給你(37-0)/(50-0) = 0.74

所以,現在你應該在0和1之間的小數值,您可以沿着Hue-Saturation-Value color scale映射。我不知道xcode是否直接使用HSV方法(this answer有一些代碼可能會有所幫助),但如果不是,則很容易convert HSV to RGB

+0

感謝您幫助我更進一步。我真的不是在尋找可以複製粘貼的東西,而是尋找方法。所以我想明白。說我的滑塊的值從1-5開始,值5是藍色,而4是紅色。 (5-1)/(5 - 1) 4/4 = 1 當sldier打開時,我想要的顏色是 UIColor colorWithRed:44/255.0f綠色:141/255.0f藍色:254/255.0f alpha:1.0f 然後滑塊移動到4給了我一個值0.75 而我想要的值是 UIColor colorWithRed:64/255.0f綠色:192/255.0f藍色:254/255.0f alpha:1.0f。 – 2014-10-01 15:07:16

+0

我不知道如何,我應該實現這個十進制,並且RGB是我用來陳述我的顏色,不會改變基於小數的這個給我一個不同的顏色? – 2014-10-01 15:08:36

+0

我描述的方法只是循環通過從紅到紫紅色的光譜;你不會真正選擇哪些值映射到哪種顏色 - 這就是彩虹的方式。在轉換成RGB之前,你可以做更多的數學調整你的色調值,但這取決於你。 – 2014-10-01 15:15:22

相關問題