【问题标题】:Strange tintColor on selected UIButton所选 UIButton 上的奇怪 tintColor
【发布时间】:2017-05-09 08:36:04
【问题描述】:

如果我的 UIbutton 被选中:

     let image = UIImage(named: "photo-camera")?.imageWithRenderingMode(.AlwaysTemplate)
     btnPhoto.setImage(image, forState: .Normal)
     btnPhoto.tintColor = UIColor.orange()

如果我的 UIbutton 被选中:

    let image = UIImage(named: "photo-camera")?.imageWithRenderingMode(.AlwaysTemplate)
    btnPhoto.setImage(image, forState: .Normal)
    btnPhoto.tintColor = UIColor.grayColor()

现在,我的问题是:当未选择 UIButton 时,一切都显示正常: Instead when the UIButton is selected that is the result:

色调不会改变图像,而是改变背景。我不明白为什么。

【问题讨论】:

  • 你想在你的标志被选中时改变它的颜色?
  • 是的,只有徽标
  • 您可以在按钮上方添加一个 imageView。
  • 你如何改变被选中的按钮?你能显示那个代码吗?另外,创建btnPhoto 变量。

标签: ios swift uibutton


【解决方案1】:

在初始化按钮时(无论是通过情节提要还是以编程方式),将 Type 设置为 Custom 而不是 System

【讨论】:

    【解决方案2】:

    你必须设置背景图像,而不是设置图像。

    class CustomTintButton: UIButton {
    
    override public var isSelected: Bool{
        didSet {
            if self.isSelected {
                self.tintColor = .orange
            }
            else{
                self.tintColor = .gray
            }
    
          }
    }
    

    【讨论】:

      【解决方案3】:

      以自定义类型拍摄 btnPhoto

      let btnPhoto = UIButton(type: .Custom)
      let image = UIImage(named: "image_name")?.imageWithRenderingMode(.AlwaysTemplate)
      btnPhoto.setImage(image, forState: .Normal)
      btnPhoto.tintColor = UIColor.grayColor()
      
      btnPhoto.addTarget(self, action: “btntSelected:", forControlEvents: .TouchUpInside)
      
      func btnSelected(sender : UIButton)
      {
      var btn:UIButton = sender
      btn.tintColor = UIColor.orange()
      }
      

      【讨论】:

        【解决方案4】:

        只需将图像设置为选定状态,并将色调颜色设置为清除。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-10-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-06
          • 2010-11-20
          相关资源
          最近更新 更多