在 iOS 9 中,Apple 引入collisionBoundsType
了UIKit-Dynamics
.
设置此选项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];
)。