2015-12-01 114 views
0

如何在iphone sdk中動畫uislider拇指動畫? 請檢查我的代碼如下。iphone中的UISlider拇指動畫sdk

創建滑塊

slider = [[UISlider alloc] initWithFrame:CGRectMake(0.0, 300.0, 320.0, 3.0)]; 
[[UISlider appearance] setThumbImage:[UIImage imageNamed:@"chnavigate-1.png"] forState:UIControlStateNormal]; 
UIImage *clearImage = [[UIImage imageNamed:@"png1.png"] stretchableImageWithLeftCapWidth:14.0 topCapHeight:0.0]; 
    [slider setMinimumTrackImage:clearImage forState:UIControlStateNormal]; 
    [slider setMaximumTrackImage:clearImage forState:UIControlStateNormal]; 


[slider addTarget:self 
      action:@selector(sliderAction:) 
forControlEvents:UIControlEventValueChanged]; 

slider.minimumValue=0.0; 
slider.maximumValue=3.6; 
[slider setValue:0.0]; 
//slider.value = 0.1f; 
[slider setContinuous:YES]; 
//slider.thumbTintColor=[UIColor redColor]; 
[slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged]; 

動畫下面的代碼:

[UIView animateWithDuration:0.3 delay:1.3 usingSpringWithDamping:0.1 initialSpringVelocity:1.0 options:UIViewAnimationOptionAllowUserInteraction animations:^{ 
    //Animations 
    slider.frame = CGRectMake(slider.frame.origin.x,slider.frame.origin.y - 20,slider.frame.size.width,slider.frame.size.height); 
} 
       completion:^(BOOL finished) { 
        //Completion Block 
       }]; 

這個動畫賦予動畫全silder。我的要求是動畫onlu滑塊拇指圖像只。 麻我。 謝謝...

+0

您試圖將什麼動畫應用到滑塊的拇指圖像?如果您試圖簡單地移動滑塊上的拇指圖像,請使用UISlider的setValue:animated:方法。如果沒有,我需要具體說明你想要讓拇指圖像做什麼。 – vaticRite

+0

上下移動20個像素動畫。 – Sudhakar

+0

假設您尚未解決了這個,你想要進行動畫時,它的坐以待斃,當用戶正在積極地沿滑塊移動拇指圖像,或兩者拇指形象? – vaticRite

回答

0

我做了一些測試代碼,並寫了一些測試代碼,我的結論是,你不能動畫的UISlider的拇指圖像,除了以下一種情況:當拇指準確滑塊中間不動。

在這種情況下,您可以使用您選擇的拇指圖像製作UIImageView(因爲您無法爲UIImage設置動畫效果)(您必須創建一個,從iOS開始無法獲取指向默認拇指圖像的指針7+),將它作爲UISlider上的子視圖放置在默認的縮略圖上,並對其進行動畫處理。然而,只要拇指處於非中心位置,您就會因爲無法獲得UISlider的音軌大小以及音軌大小小於UISlider的frame.size而感到頭疼。 .width由蘋果實施中隱藏的某種數量/因子/魔術數量。是

我認爲這兩種方法如下:

  1. 迴應UISlider UIControlEventValueChanged通知和重新計算的UIImageView的覆蓋UISlider的拇指圖像的位置。但是,如果您將此計算基於UISlider的frame.size.width,則只要您離開居中位置,就會開始將默認縮略圖與UIImageView之間的偏移量。越偏離中心偏移越大,當你移回中心時,返回0(完全排列)。
  2. 讓UIImageView獨立響應觸摸事件。不過,和以前一樣,因爲沒有得到UISlider的軌道的大小,而你可以在UIImageView的鎖定到初始的y值,讓它沿X移動的方式,有沒有辦法知道的最大或最小x值會是什麼。

無論在哪種情況下,您都可以在UISlider的框架寬度和可能適用於特定iOS版本的特定情況下工作的軌道寬度之間找到差異值,但不能保證另一種情況或更新不會打破這一點。

我的解決辦法,如果這是必要的,將創建自己的UISlider的版本,允許這樣的事情UIControl的子類。

+0

謝謝,現在我確實喜歡你所說的,但我正在尋找,有什麼辦法可以解決這個問題。 – Sudhakar