【问题标题】:How to create a small button with a large tappable area如何创建具有大可点击区域的小按钮
【发布时间】:2014-07-25 14:42:06
【问题描述】:

我想创建一个关闭按钮,它看起来像一个中间有一个 x 的圆圈。在 x 代码中,我将按钮的大小和宽度设置为较大,以便可触摸区域更大(50 x 50,字体仅为 22)。

我创建一个按钮,将标题更改为 X,然后设置以下内容:

[self.closeButton.layer setBorderWidth:2.0f];
[self.closeButton.layer setBorderColor:[[UIColor whiteColor] CGColor]];
[self.closeButton.layer setCornerRadius:self.closeButton.bounds.size.width/2];

圆形边框离 X 太远。如何使边框更靠近 X 但不减小可点击区域的大小?

【问题讨论】:

  • 我怀疑你可以。您可能必须使按钮“大”,但通过子类化使其看起来更小。
  • 你可以给按钮添加一个子视图来绘制你想要的任何大小的圆圈,并使实际的按钮变得你想要的那么大。
  • 要使用我给定的解决方案,您必须将边框设置为图像而不是按钮。

标签: objective-c xcode


【解决方案1】:

将图像分配给按钮。并根据需要制作可点击区域。然后通过将该按钮的插入值设置为上、下、左、右来设置按钮中的图像位置。根据您的要求更改此值。您可以从界面构建器中设置插入值,如图所示。更改值并查看差异以将您的图像放置在您想要的确切位置的按钮中。

一模一样

【讨论】:

    【解决方案2】:

    我会确切地建议 Max 所做的事情。他已经展示了如何通过 IB 做到这一点,这就是你如何通过代码做到这一点:

    myButton.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 25, 25);// UIButton
    
    myBarButtonItem.imageInsets = UIEdgeInsetsMake(0, 0, 25, 25);// UIBarButtonItem
    

    编辑:

    很抱歉第一次没有正确阅读您的问题。我认为您使用这种方法会遇到同样的问题:按钮的边框/角半径将尊重任何插图。它将根据按钮的框架进行绘制。在我的头顶上唯一(简单)的解决方法是创建一个带有边框和角的图像,然后将其设置为图像。图像将尊重插图,并且您将拥有所需的可点击区域,边框恰好位于您想要的位置。

    通过子类化可能会有更优雅的解决方法,但除非您在任何阶段更改按钮的边框宽度/颜色或角半径,否则我建议您坚持使用自定义图像。

    编辑 2:

    您可能想使用this unicode character,而不是使用图像。

    【讨论】:

    • @Max,我相信我们实际上并没有回答他的问题。
    • 答案是正确的。但他希望边框更接近 X 图像。这可以通过在图像中添加边框来使用我们的解决方案。
    猜你喜欢
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-05
    • 1970-01-01
    • 2017-05-06
    • 2012-06-10
    相关资源
    最近更新 更多