【问题标题】:Resize an image for a UIButton调整 UIButton 的图像大小
【发布时间】:2021-07-01 01:16:42
【问题描述】:

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

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

scaleAspectFit
内容水平对齐
或 imageEdgeInsets

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

我可以通过弄乱 imageEdgeInsets 值来获得正确的结果,但一次只能用于一个设备,因为按钮的大小会随屏幕大小而变化。

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

我在 Photoshop 上创建了所需结果的视觉表示(图 3)。

【问题讨论】:

  • 最好的方法是使用自定义视图。层次结构将是 view-> Image - Label -> UIButton.
  • @Zain 能否请您指出正确的方向来了解自定义视图和层次结构,我是编码新手。

标签: ios swift uibutton uiimage


【解决方案1】:

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

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

【讨论】:

  • 当我尝试使图像小于视图时,我遇到了冲突的约束。有什么想法吗?
  • 将 imageview 固定高度和宽度以及 stackview 的垂直和水平约束添加到 root view 。我已经在我的答案中添加了图片
  • 我按照这些步骤完成了 90%。只有一个问题!因为堆栈视图同时包含图像和文本,所以当堆栈视图居中时,文本不会水平居中。在上图中,您可以看到“Sign”中的“S”和“Google”中的“e”与边框的距离相等。我的堆栈视图不是这种情况。相反, googleImage 和 'e' 与边界的距离相等,因为这两个项目同时居中。这是一个小问题,但如果你有解决这个问题的解决方案,那就太棒了。
  • 跟进上一条评论!我删除了堆栈视图,使文本居中,然后从文本中为图像添加了前导约束。现在每个人看起来都很完美 =]
  • 给水平约束 -6 或 -7 以调整 imageanf 标题居中。我认为它会工作正常。
猜你喜欢
  • 2021-05-10
  • 1970-01-01
  • 1970-01-01
  • 2018-03-16
  • 1970-01-01
  • 2012-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多