简体   繁体   English

swift中的UIButton如何清空imageView?

[英]How do I clear imageView of UIButton in swift?

I have UIButton called menuButton which has a customClass where it sets multiple images and I have a dropDown menu when we click on it.我有一个名为 menuButton 的 UIButton,它有一个 customClass,它可以在其中设置多个图像,当我们单击它时,我有一个下拉菜单。 So based on menu selected I want to menuButton to change the image.因此,根据选择的菜单,我想用 menuButton 来更改图像。

This is my code:这是我的代码:

public enum MenuItems: String {
  case menu1 = "menu1"
  case menu2 = "menu2"
  case menu3 = "menu3"
}

func layoutView() {
     menuButton.setImages(normalImage: "triangleImage",
                                  image: "menu1",
                                  selectedImage: "closeImage")
    menuButton.addTarget(self, action: #selector(menuItemTapped), for: .touchUpInside)
    self.addSubview(menuButton)
}

func menuItemTapped(sender: UIView) {
    guard let title = sender.accessibilityIdentifier else { return }
    let style = MenuItems(rawValue: title)
    
    switch style {
    case .menu1:
      menuButton.setImages(normalImage: "triangleImage",
                                  image: "menu1",
                                  selectedImage: "closeImage")
    case .menu2:
       menuButton.setImages(normalImage: "triangleImage",
                                  image: "menu2",
                                  selectedImage: "closeImage")
    case .menu3:
       menuButton.setImages(normalImage: "triangleImage",
                                  image: "menu3",
                                  selectedImage: "closeImage")
    default:
      break
    }
}

class MultipleImageButton: UIButton {

  override init(frame: CGRect) {
    super.init(frame: frame)
  }

  required init?(coder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
  }

  func setImages(normalImage: UIImage, image: UIImage, selectedImage: UIImage) {
    setImage(normalImage, for: .normal)
    setImage(selectedImage, for: .selected)
    imageEdgeInsets = UIEdgeInsets(top: 0_5x, left: 1x, bottom: 0_5x, right: (bounds.maxX - 55))
    contentHorizontalAlignment = .right


for subview in self.subviews where subview.isKind(of: UIImageView.self) {
            subview.removeFromSuperview()//removes images if any
  }
        let imageView = UIImageView(frame: CGRect(x: bounds.origin.x + 4x,
                                                  y: (titleLabel?.bounds.midY ?? 0) + 1x,
                                                      width: 5x,
                                                  height: frame.height - 2_5x))
    
        imageView.image?.withRenderingMode(.alwaysOriginal)
        imageView.image = image
        imageView.contentMode = .scaleAspectFit
        imageView.layer.masksToBounds = true
        addSubview(imageView)
      }
    }

Using the above code I'm able to change the button image(ie imageView) but its not adding the selectedImage and normalImage only the image is getting changed.使用上面的代码我可以更改按钮图像(即 imageView),但它不添加 selectedImage 和 normalImage 只有图像正在改变。 How do I get the selectedImage and normalImage to display as well?如何同时显示 selectedImage 和 normalImage? This is what I need这就是我需要的

This is the problem now, which doesn't display triangle image.这是现在的问题,不显示三角形图像。

Follow these steps with a simple UIButton ;使用简单的UIButton按照这些步骤操作; it is not needed to use a custom Button class.不需要使用自定义Button class。

When clicking menuButton , set the button image to closeImage and show the dropdown:单击menuButton时,将按钮图像设置为closeImage并显示下拉列表:

menuButton.setImage(UIImage(named: "closeImage"), for: .normal)
// show Dropdown

When you select the menu item, change the menuButton image and hide the dropdown:当您 select 菜单项时,更改menuButton图像并隐藏下拉菜单:

menuButton.setImage(UIImage(named: "selectedItem"), for: .normal)
//hide dropdown

How do I clear imageView of UIButton in swift? swift中的UIButton如何清空imageView?

Answer: button.(UIImage(), for: .normal)答案: button.(UIImage(), for: .normal)

Its Simply remove your image from button它只需从按钮中删除您的图像

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM