2017-10-08 84 views
0

我在我的ViewController滑塊不起作用:斯威夫特更改UISlider圖像和色彩如預期

@IBOutlet weak var timeSlider: UISlider! 

當使用代碼:

timeSlider.setMinimumTrackImage(#imageLiteral(resourceName: "track"), for: .normal) 
timeSlider.setMaximumTrackImage(#imageLiteral(resourceName: "track"), for: .normal) 
timeSlider.setThumbImage(#imageLiteral(resourceName: "thumb2"), for: .normal) 

我的滑塊看起來是這樣的:

enter image description here

它很好用,並且表現得像人們預期的那樣行爲

現在,我想使部分之前拇指有不同的顏色和部分後,也有不同的顏色,所以我創建了創建從我用我的視角圖像的新圖像作爲模板(模板是一個數組)功能:

func setTemplates(){ 
     templates.removeAll() 
     for i in 0 ..< 10{ 
      templates.append(playImg[i].withRenderingMode(.alwaysTemplate)) 
     } 
    } 

模板[5]是相同的圖像作爲 「的Thumb2」

模板[6] = 「音軌」

,然後我想分配模板[6](其中,圖像「track」轉換爲模板)並以與我相同的方式着色與視圖中的其他圖像如按鈕,或以顏色標籤等這樣的:

timeSlider.setMinimumTrackImage(templates[6], for: .normal) 
     timeSlider.setMaximumTrackImage(templates[6], for: .normal) 
     timeSlider.setThumbImage(templates[5], for: .normal) 
     timeSlider.minimumTrackTintColor = colors.primaryColor 
     timeSlider.maximumTrackTintColor = colors.detailColor 
     timeSlider.thumbTintColor = colors.secondaryColor 

其中顏色是保持四種不同顏色的一個結構。但是你可以看到正確

enter image description here

圖像拇指被設置爲默認的它不工作,它甚至不檢點,因爲我不能拇指移動到0.0位置滑塊後,我移動,或顏色改變,拇指後的部分得到藍色是默認滑塊。

enter image description here

我嘗試不同的方法來對抗這個問題,但是這是我這得到了正常工作最接近的一次。在這一點上,我開始認爲這是一個錯誤,但也許我在我的代碼中犯了一些錯誤。正如我說我有按鈕,標籤,這是我的顏色我的方式嘗試在這裏

button.setImage(templates[7], forState: .normal) 
button.tintColor = colors.primaryColor 

相同的,它的工作原理 我在做什麼錯?

回答

0

從​​文件:

設置該屬性重置拇指圖像傳回滑塊的默認圖像;任何自定義圖像都由滑塊釋放。將此屬性設置爲nil會將色調顏色重置爲默認值,並刪除任何自定義的拇指圖像。

同爲兩個軌道色調。

如果你想自定義圖像,然後剛纔設置的自定義圖像,而無需還設置色調。

換言之,設置在任一自定義圖像或設置色調。不要同時設置。

+0

這並不能真正解決我的問題,因爲色調與屏幕上顯示的圖像動態匹配 – Adam

+0

如果您想要更改自定義滑塊圖像的色調,則需要爲圖像着色,然後更新滑塊自定義圖像。沒有辦法設置自定義圖像和滑塊的色調。 – rmaddy