【发布时间】:2016-06-24 04:49:13
【问题描述】:
我想快速创建几个圆形按钮,碰撞检测和重力作用于它们。但是每当我这样做时,在碰撞过程中它们就像一个正方形,(我尝试将图像添加到按钮或通过代码创建它,但结果保持不变),所以任何人都可以提供帮助,因为我想创建可以起作用的圆形按钮每当它们碰撞或坠落时都像圆形。
【问题讨论】:
标签: ios swift button uikit-dynamics
我想快速创建几个圆形按钮,碰撞检测和重力作用于它们。但是每当我这样做时,在碰撞过程中它们就像一个正方形,(我尝试将图像添加到按钮或通过代码创建它,但结果保持不变),所以任何人都可以提供帮助,因为我想创建可以起作用的圆形按钮每当它们碰撞或坠落时都像圆形。
【问题讨论】:
标签: ios swift button uikit-dynamics
试试 OBShapedButton
这是可用于不同形状类型按钮的第三方类,使用该类创建的按钮充当您赋予按钮的图像形状。
https://github.com/ole/OBShapedButton
要在故事板或 xib 文件中使用它,只需将自定义类作为 OBShapedButton 提供给 UIButton。
或以编程方式
obj_OBShapedButton = [OBShapedButton buttonWithType:UIButtonTypeCustom];
[obj_OBShapedButton setFrame:CGRectMake(10, 10, 160,161)];
[obj_OBShapedButton setImage:[UIImage imageNamed:@"button-normal.png"] forState:UIControlStateNormal];
[obj_OBShapedButton addTarget:self action:@selector(Buton_action) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:obj_OBShapedButton];
【讨论】:
要真正回答原来的问题:
自 iOS 9 发布以来,您现在可以将碰撞形状更改为圆形(或任何其他形状)。
在您的 UIButton 子类中,您可以添加以下内容:
- (UIDynamicItemCollisionBoundsType)collisionBoundsType
{
return UIDynamicItemCollisionBoundsTypeEllipse;
}
这会将碰撞边界设置为圆形而不是默认矩形。
【讨论】:
如果有碰撞和重力,请改用 SpriteKit。在那里创建任何形状,因为 SKNode 可以工作。
【讨论】: