为 UIButton 调整图像大小

Resize an image for a UIButton

我有一个带有文本和图像的 UIButton。我希望图像位于文本旁边。

我的图片是 100x100 像素。结果,当我使用...

scaleAspectFit
contentHorizo​​ntalAlignment
或 imageEdgeInsets

...图像在视觉上改变了大小,但不会改变 space 图像在按钮中占据的 100px 框架的大小(由灰色框表示)。这会将文本推到一边。 (图 1)

我可以通过修改 imageEdgeInsets 值来获得正确的结果,但一次只能针对一台设备,因为按钮的大小随屏幕大小而变化。

有没有更好的方法直接改变图像帧的大小而不使用分辨率较小的图像(这会导致图像质量大大降低)? (图 2)

我已经在 photoshop 上创建了所需结果的可视化表示(图 3)。

您可以使用如下自定义视图:

  1. 在故事板中添加视图
  2. 然后将 cornerRadius 添加到该视图
  3. 添加一个 imageView 并设置您想要的高度和宽度。
  4. 添加标签
  5. 在 StackView 中包装 imageView 和 Label。
  6. 将 StackView 约束添加到 rootView。
  7. 最后将 TapGesture 添加到该 rootView,使其像按钮一样工作。