2012-09-15 46 views
1

我有UISLider setMinimumTrackImage和setMaximumTrackImage。兩張圖片的分辨率都相同。如果我移動滑塊...圖像顯示不正確。當我滑動滑塊控制拇指時,他們正在移動。 我試圖用UISlider與TrackImage上的圖像

UIImage * sliderBarImage1 = [UIImage imageNamed:@"slider_b"]; 
UIImage * sliderBarImage2 = [UIImage imageNamed:@"slider_w"]; 

sliderBarImage1 = [sliderBarImage1 stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0]; 
sliderBarImage2 = [sliderBarImage2 stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0]; 

[self.slider setMinimumTrackImage:sliderBarImage1 forState:UIControlStateNormal]; 
[self.slider setMaximumTrackImage:sliderBarImage2 forState:UIControlStateNormal]; 

帶或不帶stretchableImageWithLeftCapWidth其不正確的。而當我旋轉手機時,軌道上的圖像會不規則地縮放,因此圖像中的信息會發生移位。 與此文章中的圖像相似:How to place image on UISlider?。當我移動滑塊時,圖像開始移動,顏色在最小和最大軌跡中不重疊,導致難看的效果。

+0

這是一個衆所周知的問題。我通過將另一個軌道圖像放在單獨的UIImageView上並將其放置在IB中的UISlider下解決了這個問題。 – Gerstmann

+0

它幫助...但setMinimumTrackImage是stil沒有正確重疊..其伸展其大小:( –

回答

4

避免拉伸圖像變化

UIImage * sliderBarImage1 = [UIImage imageNamed:@"slider_b"]; 
UIImage * sliderBarImage2 = [UIImage imageNamed:@"slider_w"]; 

UIImage * sliderBarImage1 = [[UIImage imageNamed:@"slider_b"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 
UIImage * sliderBarImage2 = [[UIImage imageNamed:@"slider_w"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 
+0

請注意,它只適用於iOS 5.0或更高版本如果你支持iOS 4.x,你必須使用' - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight' – bompf