如何確定兩個uiviewimages是否相交。我想做一個自動捕捉功能。當小圖像與大圖像相交或接近它時(Lets說距離< = x),我希望小圖像在它們相交的點自動捕捉(連接)到大圖像。兩個UIViewImages的交集
回答
前兩次的海報已經在正確的軌道上CGRectIntersectsRect
。
BOOL isIntersecting = CGRectIntersectsRect(smallImage.frame, largeImage.frame);
if(isIntersecting){
//Animate the Auto-Snap
[UIView beginAnimation:@"animation" context:nil];
[UIView setAnimationDuration:0.5];
smallImage.frame = largeImage.frame;
[UIView commitAnimations];
}
基本上這是說,如果兩個圖像相交,小圖像幀在0.5秒內對齊較大的圖像。 雖然您不必製作動畫;您可以通過刪除除smallImage.frame = largeImage.frame;
之外的所有代碼來使其瞬間完成。不過,我推薦動畫方式。 希望這有助於。
------- --------編輯
你可以使用代碼:
BOOL isIntersecting = CGRectIntersectsRect(smallImage.frame, largeImage.frame);
if(isIntersecting){
//Animation
[UIView beginAnimation:@"animation" context:nil];
[UIView setAnimationDuration:0.5];
smallImage.center = CGPointMake(largeImage.center.x, largeImage.center.y);
//If you want to make it like a branch, you'll have to rotate the small image
smallImage.transform = CGAffineTransformMakeRotation(30);
//The 30 is the number of degrees to rotate. You can change that.
[UIView commitAnimations];
}
希望這能解決問題。如果這有幫助,記得投票並選擇答案。
-------編輯--------- 最後一件事。我說CGAffineTransformMakeRotation(30)
中的「30」代表30度,但這是不正確的。 CGAffineTransformMakeRotation函數以弧度爲參數,所以如果你想要30度,你可以這樣做:
#define PI 3.14159265
CGAffineTransformMakeRotation(PI/6);
CGRect bigframe = CGRectInset(bigView.frame, -padding.x, -padding.y);
BOOL isIntersecting = CGRectIntersectsRect(smallView.frame, bigFrame);
什麼是padding.x和padding.y?對不起,我是一個新手:) –
你只是真的需要第二個位,但你可以通過-padding來插入,以使較小的視圖具有更大的矩形,當它與視圖本身不相交時,可以捕捉到較大的視圖。你可以使用相同的值爲x和y如果你想要或聲明一個cgpoint –
可以使用CGRectIntersectsRect方法來檢查幀:
if (CGRectIntersectsRect(myImageView1.frame, myImageView2.frame))
{
NSLog(@"intersected")
}
- 1. 兩個集合交集
- 2. 兩個集合中的任何交集
- 3. 兩個給定LinkedList的交集
- 4. 查找兩個數組的交集
- 5. 兩個詞典列表的交集?
- 6. 兩個大單詞列表的交集
- 7. 兩個數組與重複的交集
- 8. 檢查兩個Path2D之間的交集
- 9. Prolog中兩個字符串的交集
- 10. 兩個排序陣列的交集
- 11. 兩個圓形扇區的交集
- 12. 兩個正則表達式的交集
- 13. 兩個鏈接列表的交集
- 14. 兩個Shapefile的交集區域 - Python
- 15. 如何獲得兩個CGPath的交集?
- 16. 兩個django模型的交集?
- 17. Java 3D:獲取兩個Shape3D的交集?
- 18. 兩個列表之間的交集F#
- 19. 查找兩個ArrayList的交集
- 20. 兩個截面飛機的交集
- 21. Sql兩行交集
- 22. XPath交集兩套
- 23. 兩個或多個排序集合的交集
- 24. 兩架飛機的交集
- 25. 兩組數據的交集
- 26. 兩個表中的行的子集之間的重疊/交集
- 27. 在C#中交集兩個List <>#
- 28. 如何計算C++中兩個STL集的交集的大小
- 29. django中的兩個查詢集的交集
- 30. 如何找到兩個git提交之間的交集?
感謝您的答覆。這工作得很好。唯一的問題是大圖像內部的小圖像。我想要這樣的東西。讓我們假設小圖像是樹的一個分支。大的形象是一個很大的分支。當小分支與大分支相交時,小分支的起源將連接到大分支的表面,如http://postimage.org/image/u5790gt05/中所示。我應該使用CGRectIntersection方法嗎? –
如果CGRectIntersect方法相交,則返回「YES」,否則返回「NO」。我會在上面的帖子中添加更多... – pasawaya