所以我有一个ViewController,它有两个容器视图。最重要的是主要内容。底部是一个隐藏/显示某些事件的横幅。
底部的位置使其位于标签栏下方,直到事件发生。
当事件发生时,主视图的框架缩小,并且横幅的框架被重新定位,使得它看起来像是滑动了#39;进入视野并变得可用。
我遇到的问题是,除非我在故事板中调整主视图的大小(这不是我想要的),否则我在代码中执行的任何调整都会显示横幅,但横幅不响应触摸。 (在故事板中调整大小,它确实会做出回应。)似乎在它面前还有一些其他视图可以拦截触摸,但是什么,以及如何解决它?
主视图控制器:
func hideBanner() {
bannerViewController?.toggleBannerDisplay(show: false)
contentTableViewController?.toggleBannerDisplay(show: false)
}
func showBanner() {
bannerViewController?.toggleBannerDisplay(show: true)
contentTableViewController?.toggleBannerDisplay(show: true)
}
内容表视图控制器:
func toggleBannerDisplay(show: Bool) {
let tableView = self.view as! UITableView
UIView.animate(withDuration: 0.5, animations: {
if self.cancelApplyShowing == false && show == true {
let frame = tableView.frame
let newFrame = CGRect(x:frame.origin.x , y: frame.origin.y, width: frame.size.width, height: frame.size.height - 48)
tableView.contentSize = newFrame.size
tableView.frame = newFrame
self.cancelApplyShowing = true
} else if self.cancelApplyShowing == true && show == false {
let frame = tableView.frame
let newFrame = CGRect(x:frame.origin.x , y: frame.origin.y, width: frame.size.width, height: frame.size.height + 48)
tableView.contentSize = newFrame.size
tableView.frame = newFrame
self.cancelApplyShowing = false
}
})
}
横幅:
func toggleBannerDisplay(show: Bool) {
UIView.animate(withDuration: 0.5, animations: {
if self.cancelApplyShowing == false && show == true {
let frame = self.view.frame
let newFrame = CGRect(x: frame.origin.x, y: frame.origin.y - 48, width: frame.size.width, height: frame.size.height)
self.view.frame = newFrame
self.cancelApplyShowing = true
} else if self.cancelApplyShowing == true && show == false {
self.view.frame.origin.y += 48
self.cancelApplyShowing = false
}
})
}
出于某种原因,如果我调整主视图的大小,隐藏视图会变得敏感(当然是在动画之后)。
Vimeo视频:https://vimeo.com/246496442
答案 0 :(得分:0)
我试图为嵌入式视图控制器的视图设置动画,它确实将所有内容都放到了适当的位置,但容器视图仍然隐藏在顶部。
我为容器视图设置了动画,现在一切正常。