【问题标题】:Change the size of UIButton’s imageView改变 UIButton 的 imageView 的大小
【发布时间】:2019-12-14 23:28:17
【问题描述】:

我正在研究UIButton 的子类,我们称之为MyButton。在大多数情况下,该子类的按钮将同时具有图像和标题。

我在配置 MyButtonimageView 大小时遇到​​问题。 目标是限制图片的大小,以便调整较大的图片大小并适合 32×32 的正方形。

出于测试目的,我添加了一个 128×128 像素的图像,并将 imageViewbackgroundColor 设置为 green

下面是我添加图片时按钮的样子。 imageView 及其image 的大小均为 128 x 128 像素。

在我用CGSize(width: 160, height: 50) 覆盖MyButtonintrinsicContentSize 并将按钮的imageViewcontentMode 设置为.scaleAspectFit 后,imageView 调整了大小,但仅在高度上——它仍然是 128 像素宽,这会导致按钮的标题被​​截断。

我看过很多关于如何使用imageEdgeInsets 调整imageView 中的image 大小的文章。 这不是我要找的,因为在所有这些文章中,imageView 保留了它的大小,并且只在图像周围添加了填充。

更改imageViewframebounds 不会产生任何结果。

关于如何调整按钮的imageView 大小有什么想法吗?

【问题讨论】:

    标签: ios swift uibutton uikit


    【解决方案1】:
    let customButtonImage = MyButton.currentImage
    

    现在您可以使用 @jay 的扩展来调整按钮图像的大小以调整图像大小

    let newimage = customButtonImage. resizedImage(size:requiredSize)
    

    将图像重置为按钮

    self.setImage(tintedImage, for: .normal)   //normal or what state your want
    

    @jays 扩展

      extension UIImage
    {
        func resizedImage(Size sizeImage: CGSize) -> UIImage?
        {
            let frame = CGRect(origin: CGPoint.zero, size: CGSize(width: sizeImage.width, height: sizeImage.height))
            UIGraphicsBeginImageContextWithOptions(frame.size, false, 0)
            self.draw(in: frame)
            let resizedImage: UIImage? = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()
            self.withRenderingMode(.alwaysOriginal)
            return resizedImage
        }
    }
    

    【讨论】:

      【解决方案2】:

      您可以调整图像大小,然后将广告添加到按钮的图像。您可以在下面找到调整图像大小的代码。

      extension UIImage
      {
          func resizedImage(Size sizeImage: CGSize) -> UIImage?
          {
              let frame = CGRect(origin: CGPoint.zero, size: CGSize(width: sizeImage.width, height: sizeImage.height))
              UIGraphicsBeginImageContextWithOptions(frame.size, false, 0)
              self.draw(in: frame)
              let resizedImage: UIImage? = UIGraphicsGetImageFromCurrentImageContext()
              UIGraphicsEndImageContext()
              self.withRenderingMode(.alwaysOriginal)
              return resizedImage
          }
      }
      

      按钮 ui 扩展。

      @IBInspectable var sizeImage: CGSize {
          get {
              return self.imageView?.image?.size ?? CGSize.zero
          }
          set {
              if let image = self.imageView?.image {
                  let imgUpdate = image.resizedImage(Size: newValue)
                  self.setImage(imgUpdate, for: .normal)
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2016-09-06
        • 1970-01-01
        • 2022-09-24
        • 2016-05-04
        • 1970-01-01
        • 2012-08-15
        • 1970-01-01
        相关资源
        最近更新 更多