Also ich habe einen ViewController, der zwei Container Ansichten hat. Der oberste ist der Hauptinhalt. Der untere ist ein Banner, der bei bestimmten Ereignissen versteckt wird.Dual Container Ansicht Animation iOS
Der untere ist so positioniert, dass er unter der Tab-Leiste liegt, bis das Ereignis eintritt.
Wenn das Ereignis eintritt, wird der Rahmen der Hauptansicht verkleinert und der Rahmen des Banners wird neu positioniert, so dass er in die Ansicht "gleitet" und verfügbar wird.
Das Problem, das ich habe, ist, wenn ich nicht die Größe der Hauptansicht im Storyboard ändern (was ich nicht will), jede Größenänderung, die ich im Code mache, enthüllt das Banner, aber das Banner reagiert nicht auf Berührungen. (Die Größe ändert sich im Storyboard, es reagiert.) Es scheint so, als ob eine andere Ansicht davor die Berührungen abfängt, aber was und wie behebe ich es?
Die Hauptansicht-Controller:
func hideBanner() {
bannerViewController?.toggleBannerDisplay(show: false)
contentTableViewController?.toggleBannerDisplay(show: false)
}
func showBanner() {
bannerViewController?.toggleBannerDisplay(show: true)
contentTableViewController?.toggleBannerDisplay(show: true)
}
Die Inhaltstabelle View-Controller:
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
}
})
}
Das Banner:
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
}
})
}
Aus irgendeinem Grund, wenn ich das Hauptansicht Größe ändern, die versteckte Ansicht wird reaktionsfähig (nach Animationen natürlich).
Vimeo Video: https://vimeo.com/246496442