【问题标题】:Hiding UIButton(which added programatically) once view is hidden隐藏视图后隐藏 UIButton(以编程方式添加)
【发布时间】:2021-04-26 23:17:49
【问题描述】:

目标: 隐藏视图后隐藏 UIButton(带图像)。

我有一个布局,当用户在屏幕上点击 (UITapGestureRecognizer) 时,地图视图可以隐藏。发生这种情况时,我想隐藏“关注用户按钮”三角形。目前我做不到。

我尝试过的:(来自多个 google/SO 帖子)

1)

followUserButton.removeFromSuperview()
followUserButton.widthAnchor.constraint(equalToConstant: 150).isActive = true
followUserButton.heightAnchor.constraint(equalToConstant: 150).isActive = true
followUserButton.setImage(image:nil for: .normal)

我尝试的最后一个基本上只是将图像设置为黑色(以融入背景)。这看起来确实很成功,但是(参见 gif 图像),出于某种原因,第一次单击仍会显示按钮(非常浅的黑色/灰色 - 在图像的底部中间)。再次点击,地图视图出现,然后再次点击,它终于消失了

followUserButton.tintColor = .black
  1. followUserButton.isHidden = true

这就是我以编程方式添加按钮的方式

  var followUserImage: UIImage!
  var followUserButton: UIButton!

  override func viewDidLoad() {    
    setupFollowUserButton()
  }

  func setupFollowUserButton() {
          addFollowUserButton()
          self.view.addSubview(followUserButton)
          constraintFollowUserButton()
      }      

  func hideFollowUserButton() {
    if vcTrainMapView.isHidden {
      if followUserButton != nil {
        //  followUserButton.removeFromSuperview()
        //  followUserButton.tintColor = .black
        followUserButton.isHidden = true
      }
    } else if followUserButton != nil {
      followUserButton.tintColor = .lightGray
    }
  }

    func addFollowUserButton() {
        followUserButton = UIButton(type: UIButton.ButtonType.custom)
        followUserImage = UIImage(named: "follow_user_high")
        followUserButton.setImage(followUserImage, for:.selected)
        followUserImage = (UIImage(named: "follow_user"))
        followUserButton.setImage(followUserImage, for: .normal)
        followUserButton.tintColor = .lightGray
        followUserButton.addTarget(self, action: #selector(buttonAction(_:)), for: .touchUpInside)
      }
    
      @objc private func buttonAction(_ sender: UIButton) {
        self.followUserStatus = !self.followUserStatus
        sender.isSelected.toggle()
      }
      
      func constraintFollowUserButton() {
        followUserButton.translatesAutoresizingMaskIntoConstraints = false
        followUserButton.bottomAnchor.constraint(equalTo: vcTrainMapView.bottomAnchor, constant: -10).isActive = true
        followUserButton.leadingAnchor.constraint(equalTo: vcTrainMapView.leadingAnchor, constant: 10).isActive = true
        followUserButton.widthAnchor.constraint(equalToConstant: 50).isActive = true
        followUserButton.heightAnchor.constraint(equalToConstant: 50).isActive = true
      }

这就是我使用上面的#3 所取得的成就。 (gif中的按钮很轻)

【问题讨论】:

  • 您能分享一下您是如何存储 followUserButton 属性的吗?
  • 您是否尝试过将按钮设置为隐藏? followUserButton.isHidden = true 类似的东西?
  • @James 是的.. 这也是我尝试过的。 (在原始帖子中添加)。
  • @πter 我添加了属性的实例化方式。
  • 您是否尝试将按钮添加到vcTrainMapView 而不是主视图?那么它应该在地图视图隐藏时自动隐藏

标签: ios swift uibutton


【解决方案1】:

如果您要在详细视图(您的地图视图)的同时隐藏和显示一个按钮,并且您正在显示该按钮以使其看起来像在该视图上,您​​可以添加按钮直接指向该视图而不是视图控制器主视图。

当然,您仍然可以从视图控制器控制按钮的操作,但是如果将其添加到地图视图中,那么当地图视图隐藏时,该按钮将被隐藏。

【讨论】:

    猜你喜欢
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多