UIButton中图像四周内边距的填充问题

11

我有一个按钮,包括a)图像和b)背景图像 - 都在故事板中构建。由于背景图片具有不同的形状,因此图像从按钮中弹出。我想给实际的图像(a)四面都加一些间距,以便它可以缩回背景图像中。但如果只使用插入来添加间距,它只会给非相对面提供填充;当相反的面设置相同的插入时,图像不会缩小。请告诉我如何在故事板和编程中完成这个功能。


你不需要这样做。只需创建一个父级UIView,然后在您的UIButton和这个新父级之间添加约束即可。 - user9335240
我觉得你没有理解重点。如果我设置约束,它将是在按钮的边缘而不是其中的图像。我希望我的背景图像保持不变,但缩小按钮图像。 - Curtis
现在我明白了你的意思,答案必须有截图。 - user9335240
你可以使用UIView解决方案,如何实现呢?创建一个UIView,将UIImage放入其中并填充,然后放置UIButton,根据需要设置约束即可。 - user9335240
这不仅仅是一个简单的按钮,还涉及到格式化。当按钮被点击时,图片也会反映出这种格式化效果,因此我希望能找到一个解决方案。 - Curtis
显示剩余3条评论
2个回答

30

您应设置按钮以填充图像。这样做可以使用图像插入作为填充。请注意,这将拉伸图像,因此如果您想要正确的纵横比,则需要在左/右与上/下适当填充。

在Storyboard中,您可以在按钮控件部分进行操作,然后调整按钮的图像插入。

输入图片描述

在代码中,您可以像这样操作。

button.contentVerticalAlignment = .fill
button.contentHorizontalAlignment = .fill
button.imageEdgeInsets = UIEdgeInsets(top: 5, left: 10, bottom: 5, right: 10)

2

而对于iOS 15及以上版本

// 1. Create configuration for your button
  var configuration = UIButton.Configuration.plain() // there are several options to choose from instead of .plain()
         
// 2. Here is your content Insets               
  configuration.contentInsets = NSDirectionalEdgeInsets(top: 24, leading: 24, bottom: 24, trailing: 24)
        
// 3. This is my Button and you can set to your Button the configuration
  myButton.configuration = configuration
    
// 4. Hehe this step is just for fun, Swift is fun <3

附言:

这个功能不适用于旧版的iOS系统,只适用于15及以上版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接