【发布时间】: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
- 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
}
【问题讨论】:
-
您能分享一下您是如何存储 followUserButton 属性的吗?
-
您是否尝试过将按钮设置为隐藏? followUserButton.isHidden = true 类似的东西?
-
@James 是的.. 这也是我尝试过的。 (在原始帖子中添加)。
-
@πter 我添加了属性的实例化方式。
-
您是否尝试将按钮添加到
vcTrainMapView而不是主视图?那么它应该在地图视图隐藏时自动隐藏