【问题标题】:UIButton image static sizeUIButton图片静态大小
【发布时间】:2017-10-15 09:39:29
【问题描述】:

我希望默认按钮的图像始终具有静态大小,而不是由 sizeToFit() 在 UIButton 的私有 API 中某处计算的帧。

所以,我不想调整图像本身的大小,例如,如果我的图像是2500x1600,我希望图像始终是24x24,所以它不应该调整实际按钮的大小。 button.imageEdgeInsets 在这种情况下对我不起作用。同样imageRect 方法覆盖没有给出正确的结果,因为contentRect 在那个时候已经是错误的。另外,我不想使用任何类型的resizing image 代码。我只想让原生imageView 具有静态大小。

有没有办法使用原生 image 属性来做到这一点。在我最终决定使用自定义 imageView 子视图之前,我正在尝试寻找解决方案

更新: 它应该没有按钮的静态宽度。所以按钮的宽度应该取决于文本。但图片大小应该是静态的。

【问题讨论】:

    标签: ios swift uiimageview uibutton


    【解决方案1】:

    给你的按钮fix width and fix height 约束!它将根据您的按钮框架管理图像大小!

    您只需将一个按钮拖放到情节提要或 xib 即可演示它。设置fixed width, fixed height, top and leading约束并为其设置任何图像!

    【讨论】:

    • 如果我还需要按钮宽度/高度不是静态的怎么办?就像我支持不同的语言一样,按钮的宽度取决于它的文本。因此,按钮的宽度应该类似于contentInset.left + text.width + somePaddingToImage + imageStaticWidth + contentInset.right
    • 那么如果你要设置按钮的图像,那么它将采用它所拥有的图像大小!
    【解决方案2】:

    试试下面这个按钮,

    myButton.imageView.contentMode = .ScaleAspectFill 
    

    如果它不起作用,请给我一些关于你的项目的更具体的细节你如何给 UIButton 框架。

    【讨论】:

      【解决方案3】:

      你可以使用

      button.imageView.clipsToBounds = YES;
      

      button.imageView.contentMode = .ScaleAspectFill
      

      将按钮的框架设置为所需的高度和宽度后,您可以在界面构建器中使用约束或在 viewDidLoad() 中使用您自己的方法来完成此操作

      【讨论】:

      • 为我的问题添加了更新。我需要有动态宽度的按钮...
      • 然后您需要使用 UIEdgeInsets 设置按钮 imageEdgeInsets 和 titleEdgeInsets。
      【解决方案4】:

      我认为你可以使用

      let inset: CGFloat = 10
      closeButton.imageEdgeInsets = UIEdgeInsets(top: inset, left: inset, bottom: inset, right: inset)
      

      您可以根据 edgeInsets 调整imageView 的宽度/高度。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-29
        • 2021-11-30
        • 2021-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-15
        • 1970-01-01
        相关资源
        最近更新 更多