【问题标题】:Swift - Round ButtonSwift - 圆形按钮
【发布时间】:2016-06-24 04:49:13
【问题描述】:

我想快速创建几个圆形按钮,碰撞检测和重力作用于它们。但是每当我这样做时,在碰撞过程中它们就像一个正方形,(我尝试将图像添加到按钮或通过代码创建它,但结果保持不变),所以任何人都可以提供帮助,因为我想创建可以起作用的圆形按钮每当它们碰撞或坠落时都像圆形。

【问题讨论】:

    标签: ios swift button uikit-dynamics


    【解决方案1】:

    试试 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];
    

    【讨论】:

      【解决方案2】:

      要真正回答原来的问题:

      自 iOS 9 发布以来,您现在可以将碰撞形状更改为圆形(或任何其他形状)。

      在您的 UIButton 子类中,您可以添加以下内容:

      - (UIDynamicItemCollisionBoundsType)collisionBoundsType
      {
          return UIDynamicItemCollisionBoundsTypeEllipse;
      }
      

      这会将碰撞边界设置为圆形而不是默认矩形。

      【讨论】:

        【解决方案3】:

        如果有碰撞和重力,请改用 SpriteKit。在那里创建任何形状,因为 SKNode 可以工作。

        【讨论】:

        • 我对 SpriteKit 不太熟悉,所以我避免使用它。我可以在 ViewController 中做同样的事情吗??
        • @AmanKumar 我只是不明白... SpriteKit 被设计为处理碰撞、引力和一切的物理引擎。为什么不学习一点最简单的工具,而不是 UIKit。这就像,有一架免费的飞机可以带你从美国到中国,但你却在问人们如何建造一艘木船并航行穿越太平洋。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-11-03
        • 2012-08-28
        • 1970-01-01
        • 2016-11-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多