2013-03-27 99 views
1

我有以下設置:檢查,看看是否在孩子觀點是在父視圖

enter image description here

凡淡藍色的看法,讓我們稱之爲parentView,具有矩形子視圖(紫色查看)稱爲childView。用戶可以通過將他們的手指放在紅點所展示的點上並推動或拉動它來使用平移觸摸來旋轉和拉伸childView。

在用戶完成其觸摸後,可能會縮小childView的大小,紅點表示的點位於parentView的內部。

我的目標是創建一個方法,可以檢測紅色點是否在parentView或不。我已經寫了下面的代碼:

CGPoint childViewRedPoint = CGPointMake(self.bounds.size.width, self.bounds.size.height/2); 
CGPoint rotatedChildViewRedPoint = CGPointApplyAffineTransform(childViewRedPoint, CGAffineTransformMakeRotation(self.rotateAngle)); 
CGPoint convertedChildViewRedPoint = [self convertPoint:rotatedChildViewRedPoint toView:self.superview]; 

if (CGRectContainsPoint(self.superview.bounds, convertedChildViewRedPoint)) 
{ 
    return YES; 
} 
else 
{ 
    return NO; 
} 

首先,我發現紅點爲childView中定義的,然後我通過自己的意見被轉動的量旋轉它,那麼我將其轉換爲在parentViews座標。

我得到的觀點似乎沒有道理,這是行不通的。想知道是否有人知道我要去哪裏?我沒有考慮到parentViews superview嗎?

回答

3

我不是100%肯定,但我認爲已經convertPoint:需要一個循環(或任何其他變換)考慮進去,所以你只需要:

CGPoint childViewRedPoint = CGPointMake(self.bounds.size.width, self.bounds.size.height/2); 
CGPoint convertedChildViewRedPoint = [self convertPoint:childViewRedPoint toView:self.superview]; 

if (CGRectContainsPoint(self.superview.bounds, convertedChildViewRedPoint)) 
... 
+0

這是它到底,謝謝! – 2013-03-27 04:57:30