为啥 Button SubView 不会在 swift 4 中回到后面?

Posted

技术标签:

【中文标题】为啥 Button SubView 不会在 swift 4 中回到后面?【英文标题】:why Button SubView will not go to the back in swift 4?为什么 Button SubView 不会在 swift 4 中回到后面? 【发布时间】:2019-01-07 11:36:30 【问题描述】:

我有一个带有 xib 文件的视图类,所以我想在按钮的背景上使用这个视图,所以我使用了子视图,但问题是按钮的子视图将在按钮的前面,所以我不能点击按钮不再我使用 UI 调试模式,我意识到按钮在视图的后面,所以我在我的代码中使用 send to back 但视图仍然在按钮的前面!

 let adsView = videoAdsView()
func adsOutlet() 
    self.adsView.frame = CGRect(x: 0, y: 0, width: 80, height: 80)
    self.showAdsOutlet.addSubview(adsView)
    self.showAdsOutlet.sendSubview(toBack: self.adsView)


override func viewDidLayoutSubviews() 
    super.viewDidLayoutSubviews()
    adsOutlet()

【问题讨论】:

showAdsOutlet 是你的按钮的变量,adsView 是你想要在按钮后面的背景视图吗? 是的 showAdsOutlet 是我的按钮,adsView 是我的视图,应该在按钮的后面 【参考方案1】:

将以下代码放在 adsOutlet 方法的末尾:

self.adsView.isUserInteractionEnabled = false

【讨论】:

【参考方案2】:

如果您想将按钮添加为背景视图的子视图,那么您可以这样做,您的按钮将位于背景前面:

self.backgroundView.addSubview(adsButton)

如果您不想将adsButton 作为backgroundView 的子视图,但您想确保它出现在backgroundView 的前面,那么假设两者都是父view 的子视图,请执行以下操作:

self.view.sendSubview(toFront:adsButton)

【讨论】:

抱歉,我误解了您在设置背景视图前的按钮时遇到问题,但真正的问题是您无法与之交互。 没问题但是mohammad_Z74的回答解决了我的问题【参考方案3】:

请试试这个代码:

清除按钮background color。 然后写这段代码:

self.view.bringSubview(toFront: showAdsOutlet)

它可能对你有帮助。谢谢

【讨论】:

以上是关于为啥 Button SubView 不会在 swift 4 中回到后面?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 superview-with-subview 在模态显示(使用自动布局)时会缩小?

为啥我在 subView 中添加一些约束时会出错?

为啥 Gtk 的 button_press_event 不会收到单击左键?

为啥 display:block on button 不会使按钮成为容器的全宽? [复制]

Subview 不会成为第一响应者

iOS7 ViewControllers 将 subView 添加到 topViewController 后不会出现