2012-03-28 68 views
1

我有一個由12個切片組成的餅圖,它們都在一個數組中。這個想法是能夠觸摸任何特定切片,在陣列內接收其正確的索引位置,並上下調整切片。我已經完成了切片的創建,以及縮放,但是選擇正確索引後的數學難倒了我。在屏幕上查找對象的數組索引

當前的代碼(slicesArray = 12)我有一個返回不正確的索引號是:

UITouch *touch = [touches anyObject]; 
CGPoint point = [touch locationInView:self.view]; 
int index = atan2f(point.x-self.view.center.x, point.y-self.view.center.y) * self.slicesArray.count/(2*M_PI); 

該圖像示出了切片,與代表正確的索引號的黑色文本,而白色文本表示上面的代碼返回什麼。

enter image description here

感謝您的幫助。

+0

什麼是片的類型?你在使用ImageView嗎? – mithilesh 2012-03-28 06:32:33

+0

它們是UIBezierPath的內部UIView的。每個切片都有它自己的UIView。 – 2012-03-28 06:35:44

回答

1

如果您使用UIImageView顯示所有圖像,然後Here's my answer will help you。 你需要做的是個別UIImageView的setTag。它將識別感動的UIImageView。它的標籤將爲你的數組索引,並且你也可以將它傳遞給NSArray以從中獲取價值。

+0

它可以爲個人UIView工作。只需用UIView替換UIImageView(從我的上面的答案),你會得到你的結果。 – Hemang 2012-03-28 06:51:55

+0

天才!我有一個問題與主視圖縮放我的切片在索引0.我將self.view設置爲-1,並修復它。再次感謝。 – 2012-03-28 07:17:07

+0

@Tobe_Sta,很高興爲您效勞!快樂編碼:) – Hemang 2012-03-28 07:36:39

0

使用一個for循環來找出哪些UIView的被觸摸

UIView *selectedPie; 

for (UIView *pie in slicesArray) { 

if(CGRectContainsPoint(pie.frame, point)) { 

selectedPie = pie; 
break; 

    } 

} 

,然後縮放selectedPie。希望這有助於

相關問題