包圍一個UIView的路徑在iOS系統9蘋果公司推出了collisionBoundsType
到UIKit-Dynamics
。設置碰撞的iOS 9
我沒有問題,設置這個UIDynamicItemCollisionBoundsTypeRectangle
或當我設置爲UIDynamicItemCollisionBoundsTypeEllipse
時。
下面的屏幕截圖是從遊戲我提出讓玩家的collisionBoundsType
設置爲矩形,球被設置爲橢圓:
但是,當我設置玩家的collisionBoundsType
到路上,我得到奇怪的行爲,在這裏看到:
的看法比它應該出現更高的碰撞身體向右它應該在哪裏。
目前我有collisionBoundingPath
一套這樣的:
- (UIBezierPath *)collisionBoundingPath
{
maskPath = [[UIBezierPath alloc] init];
[maskPath addArcWithCenter:CGPointMake(SLIME_SIZE, SLIME_SIZE) radius:SLIME_SIZE startAngle:0*M_PI endAngle:M_PI clockwise:NO];
return maskPath;
}
此外,我的drawRect函數如下所示:
- (void) drawRect:(CGRect)rect
{
if (!_color){
[self returnDefualtColor];
}
if (!maskPath) maskPath = [[UIBezierPath alloc] init];
[maskPath addArcWithCenter:CGPointMake(SLIME_SIZE, SLIME_SIZE) radius:SLIME_SIZE startAngle:0*M_PI endAngle:M_PI clockwise:NO];
[_color setFill];
[maskPath fill];
}
這究竟是爲什麼?如何將碰撞體的路徑設置爲與視圖中的圖形相同?
另外,紅色是視圖(即view.backgroundColor = [UIColor redColor];
)的只是背景。
不是繪圖專家,但文檔建議路徑應該是多邊形。您的代碼添加了一個弧,但沒有關閉路徑。也許你應該調用'[maskPath closePath]'來創建一個封閉的路徑,這可能會有所不同? –
它會自動關閉 – WMios
對於填寫'drawRect',情況就是這樣。你確定你的'collisionBoundingPath'嗎?它在文檔中說它關閉路徑的地方在哪裏? –