iOS 9では、AppleはcollisionBoundsType
からUIKit-Dynamics
を導入しました。iOS 9のUIViewの衝突境界線の設定
UIDynamicItemCollisionBoundsTypeRectangle
に設定しても、これをUIDynamicItemCollisionBoundsTypeEllipse
に設定しても問題はありません。
以下のスクリーンショットは、私が選手のcollisionBoundsType
が矩形に設定され、ボールが楕円に設定されて作っていますゲームからです:
しかし、私はプレイヤーのcollisionBoundsType
に設定する場合ここに見られるように、パス、私は奇妙な動作を取得:
ビューは、それが必要以上に高く表示され、衝突体が右にありますどこにあるべきか
- (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];
}
ですが、なぜでしょう
は現在、私はこれにcollisionBoundingPath
セットを持っていますか?コリジョンボディのパスをビューの図面と同じにするにはどうすればよいですか?
さらに、赤色はビューの背景にすぎません(つまり、view.backgroundColor = [UIColor redColor];
)。
図面のエキスパートではありませんが、ドキュメントにはパスがポリゴンである必要があることが示されています。あなたのコードは、弧を追加していますが、パスを閉じていません。おそらく '[maskPath closePath]'を呼んで、違いを生むかもしれない閉じたパスを作成する必要がありますか? –
これは自動的に閉じます – WMios
'drawRect'の塗りつぶしのためにこれが適用されます。あなたの 'collisionBoundingPath'は本当ですか?ドキュメントでは、パスを閉じる場所はどこですか? –