2011-11-16 82 views
2

我想創建一個輪子,可以加載某些對象(不同顏色的實例),用戶可以通過「旋轉」來查看其他顏色的,像這樣:繪製自定義選擇器輪

Image sample here http://i44.tinypic.com/2uy0rqb.png

但我不確定從哪裏開始。我希望能夠加載儘可能多的顏色,然後在進入和離開可見視圖窗口時對其進行排隊/出列。經過一番研究,我得到的印象是使用UIScrollView是實現這個目標的方法嗎?我將深入挖掘這個選項,但同時也很高興知道這是否是正確的方法,或者如果這是完全錯誤的,還有其他更好的方法。

+0

如果你想要像輪子一樣旋轉的東西,那麼'UIScrollView'不適合你。 – MusiGenesis

+0

謝謝,沒錯,我確實希望它像一個輪子一樣旋轉。任何建議什麼會工作?我只需要開始一個自定義的UIView? UIScrollView聽起來不錯,因爲它具有我需要的大部分功能(排隊/出隊對象,慣性滾動)。我想我需要在自己身上構建這個功能? – Shaun

回答

2

在這種情況下,UIScrollView不會真的給你買東西。它不會自動排隊/出隊(UITableView將會),它只會響應水平滾動垂直滾動&。開箱即用,不能圍繞軸旋轉。

在UIKit中沒有任何東西可以幫助你,你可能會想從UIView開始。

使用UIPanGestureRecognizer(拖動)和UISwipeGestureRecognizer來跟蹤您的用戶何時觸摸旋轉元素。 UIRotatationGestureRecognizer可能不是你想要的,因爲它需要用戶使用兩根手指。基於多遠X & y中的用戶

view.transform = CGAffineTransformMakeRotation(someRadian); 

計算旋轉量(弧度):

取決於你是如何複雜的這一觀點得到,你可以逃脫只是做有藥物。根據你想要得到多麼好看,1個像素x或y可以讓你獲得0.1弧度旋轉(我只是猜測,你會想要玩它,直到你的速度正確)。如果你想得到真正的幻想,並讓你的用戶實際上是他們的手指,你會想要使用一些三角函數將其轉換爲旋轉量。

如果是輕掃,請計算您想讓視圖旋轉多長,並將其包裝在UIView動畫中。

如果你覺得這不工作,你可能需要再往CALayer的,這是唯一稍微複雜一些:

view.layer.transform = CATransform3DMakeRotation(someRadian, 0, 0, 1); 

和動畫它,你將需要創建一個CAAnimation:

CABasicAnimation *rotate = [CABasicAnimation animationWithKeyPath:@"transform.rotation"]; 
rotate.fromValue = [NSNumber numberWithFloat:0]; 
rotate.toValue = [NSNumber numberWithFloat:someRadian]; 
rotate.duration = 2.0; // seconds 
[view.layer addAnimation:rotate forKey:nil]; // "key" is optional 

This可能會給你更多的信息

至於你的添加/刪除顏色,通過跟蹤圈多遠旋轉,你應該能夠ŧ o計算你想看到的顏色色板。但是,如果您願意讓有限數量的顏色讓步,則可以簡單地在Interface Builder中使用所有顏色佈局UIView,將其添加到根視圖中,只顯示右手邊角,然後將其旋轉爲如前所述,不必擔心這一點。

+0

謝謝,這給我很多建設。試圖標記它是有用的,但猜測我沒有足夠的聲望去做,但... – Shaun