将 UIView 添加为子视图并在 Swift 中确定它们在视图层次结构中的位置
Posted
技术标签:
【中文标题】将 UIView 添加为子视图并在 Swift 中确定它们在视图层次结构中的位置【英文标题】:Adding UIView's as subviews and determining their position in the view hierarchy in Swift 【发布时间】:2016-12-01 19:27:50 【问题描述】:我正在使用一个名为 SAConfettiView 的 Swift 库:https://github.com/sudeepag/SAConfettiView
我想在我的视图层次结构的顶部添加一个“confettiView”,这样它就不会被其他任何东西阻挡,但我仍然希望 UIButton、UITableViewCell 等是可选的,我该如何在代码中做到这一点?
下面是我目前使用的代码:
override func viewDidLayoutSubviews()
// Create confetti view
confettiView = SAConfettiView(frame: self.view.bounds)
// Set colors (default colors are red, green and blue)
confettiView.colors = [UIColor(red:0.95, green:0.40, blue:0.27, alpha:1.0),
UIColor(red:1.00, green:0.78, blue:0.36, alpha:1.0),
UIColor(red:0.48, green:0.78, blue:0.64, alpha:1.0),
UIColor(red:0.30, green:0.76, blue:0.85, alpha:1.0),
UIColor(red:0.58, green:0.39, blue:0.55, alpha:1.0)]
// Set intensity (from 0 - 1, default intensity is 0.5)
confettiView.intensity = 1
// Set type
confettiView.type = .Diamond
// For custom image
// confettiView.type = .Image(UIImage(named: "diamond")!)
// Add subview
view.addSubview(confettiView)
confettiView.startConfetti()
【问题讨论】:
【参考方案1】:不检查第三方代码,但如果编写正确,您可以 - 至少 - 使用“UIView.bringSubview(ToFront:UIView)”。
当然,如果五彩纸屑真的在你的层次结构的顶部,它是 - 意思是,它没有被阻碍。
【讨论】:
只是为了确认当我说视图层次结构的顶部时,我的意思是屏幕上最顶部的项目(我说“顶部”可能是错误的)。 如果它在屏幕的最上方,那么它可能会干扰触摸,对吧?它似乎是一个 UIView,它将成为最顶层的 Z 层。可能你能做的最好的事情就是添加你的 UIButtons,这样它们就不会被阻挡 - 无论是在这个五彩纸屑 UIView 没有阻挡的地方,还是作为五彩纸屑 UIView 中的一个子视图。我想我可以说我知道你想要什么......但你能说你看到了一个有效的例子吗? 它确实会干扰触摸,我还没有看到在所有其他视图前面只有“五彩纸屑”的例子。以上是关于将 UIView 添加为子视图并在 Swift 中确定它们在视图层次结构中的位置的主要内容,如果未能解决你的问题,请参考以下文章
UIView:将 UIViewController 的视图添加为子视图并将其删除