用透明按钮覆盖堆栈视图
covering stackview with a transparent button
我有一个带有 3 个子视图(一个图像视图、一个按钮和另一个带有图像的按钮)的水平堆栈视图,如下所示,
view
stackview
imageview
button
button
or
image|button|button
我想向此 stackview 添加一个透明按钮,覆盖所有三个视图,以便我可以在用户单击它时分配一个操作。但我不知道该怎么做?有什么技巧可以实现吗?
在添加stackView
后直接添加到view
(这样会在stackView
之后渲染):
view
stackView
imageview
button
button
transparentButton
这里的技巧是,如果 view.addSubview(stackView)
后面跟着 view.addSubview(transparentButton)
,那么 transparentButton
会呈现在 stackView
及其内容之上,它会得到触摸事件而不是后面的内容。
然后添加约束,使其复制 stackView
框架:
NSLayoutConstraint.activate([
transparentButton.leftAnchor.constraint(equalTo: stackView.leftAnchor),
transparentButton.rightAnchor.constraint(equalTo: stackView.rightAnchor),
transparentButton.topAnchor.constraint(equalTo: stackView.topAnchor),
transparentButton.bottomAnchor.constraint(equalTo: stackView.bottomAnchor),
])
虽然我必须说,你想要添加一个按钮来覆盖其他按钮似乎有点奇怪。也许您想将 stackView
中的那些按钮替换为 UILabel
s.
您不能在 stackView 中添加一个与其他项目具有特定对齐方式的项目,您应该在同一层次结构中创建透明按钮,其框架等于 stackView 的框架,或者使用自动布局设置它顶部、底部、前导和尾随
我有一个带有 3 个子视图(一个图像视图、一个按钮和另一个带有图像的按钮)的水平堆栈视图,如下所示,
view
stackview
imageview
button
button
or
image|button|button
我想向此 stackview 添加一个透明按钮,覆盖所有三个视图,以便我可以在用户单击它时分配一个操作。但我不知道该怎么做?有什么技巧可以实现吗?
在添加stackView
后直接添加到view
(这样会在stackView
之后渲染):
view
stackView
imageview
button
button
transparentButton
这里的技巧是,如果 view.addSubview(stackView)
后面跟着 view.addSubview(transparentButton)
,那么 transparentButton
会呈现在 stackView
及其内容之上,它会得到触摸事件而不是后面的内容。
然后添加约束,使其复制 stackView
框架:
NSLayoutConstraint.activate([
transparentButton.leftAnchor.constraint(equalTo: stackView.leftAnchor),
transparentButton.rightAnchor.constraint(equalTo: stackView.rightAnchor),
transparentButton.topAnchor.constraint(equalTo: stackView.topAnchor),
transparentButton.bottomAnchor.constraint(equalTo: stackView.bottomAnchor),
])
虽然我必须说,你想要添加一个按钮来覆盖其他按钮似乎有点奇怪。也许您想将 stackView
中的那些按钮替换为 UILabel
s.
您不能在 stackView 中添加一个与其他项目具有特定对齐方式的项目,您应该在同一层次结构中创建透明按钮,其框架等于 stackView 的框架,或者使用自动布局设置它顶部、底部、前导和尾随