在 Swift 中创建自定义(八角形)UIButton 的最佳方式

Best way to create Custom (Octagonal) UIButton in Swift

我即将自定义我所有的 UIButtons,方法是将它们子class 化为一个特殊的 UIButton class,我想要“外观和感觉”就像下面的八角形或一些六角形按钮。 创建这种形状 UI 按钮的最佳方法是什么?到目前为止,我只知道如何创建矩形、圆形和圆角按钮,我找不到下面“外观和感觉”的 SO 答案或 cocoapods。

  1. 是否可以通过编程方式创建此类 UIButton 的自定义 class?

  2. 还是需要在按钮上导入图片才能实现下面的“观感”?

  3. 另外,有没有可能App Store不允许这样的自定义形状按钮?

  1. 是的,您可以使用 UIBezierPath 为包括 UIButton 在内的各种 UIKit 组件创建任意形状。请参阅教程 here
  2. 我认为上面的#1 与 myButton.layer.borderColor/.borderWidth
  3. 结合使用是可以实现的
  4. 我不确定。我的猜测是否定的,但我认为这取决于 Apple Human Interface guidelines 在某些情况下似乎是任意的。对于它的价值,我发布的应用程序具有非常相似的按钮,但它们是椭圆形而不是像您那样的多边形,但看起来仍然非常相似。

更新:忘了一个很好的例子。这是我使用带有 UIBezier 路径的 UIButton 创建的“书签选项卡”效果的示例。这已经发货多年,没有任何问题: