【发布时间】:2023-03-17 23:16:02
【问题描述】:
我有一个复杂的堆栈视图,其中包含许多排列好的标签和按钮。当我试图掩盖整个堆栈视图以强制使用角半径时,堆栈视图中的按钮不再起作用(在内部触摸时不会触发动作选择器)。我决定首先将问题简化为一个按钮和一个面具,如下所示:
let mask = UIView()
mask.translatesAutoresizingMaskIntoConstraints = false
mask.backgroundColor = .green
mask.layer.cornerRadius = 50
view.addSubview(mask)
mask.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
mask.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
mask.widthAnchor.constraint(equalToConstant: 200).isActive = true
mask.heightAnchor.constraint(equalToConstant: 100).isActive = true
btn = UIButton()
btn.backgroundColor = .red
btn.translatesAutoresizingMaskIntoConstraints = false
btn.setTitle("More info", for: .normal)
btn.tintColor = .black
btn.addTarget(self, action: #selector(moreInfoTapped), for: .touchUpInside)
view.addSubview(btn)
btn.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
btn.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
btn.widthAnchor.constraint(equalToConstant: 200).isActive = true
btn.heightAnchor.constraint(equalToConstant: 100).isActive = true
view.layoutSubviews()
view.setNeedsLayout()
btn.mask = mask
这会正确屏蔽按钮,但不幸的是,屏蔽被放置在按钮前面,因此按钮上的点击从未注册。
这是视图层次结构:
我错过了什么吗?
【问题讨论】:
-
我不知道您想要实现什么先生...但一种解决方法是关闭用户交互以屏蔽视图..其他选项是不要将屏蔽视图添加到您的视图...
标签: ios swift uibutton calayer uibezierpath