我正在使用Xcode 9和iOS 11。 我想在视图中动态添加横幅,调整最小视图的大小,为即将到来的横幅视图留出足够的空间......
我写了下面的代码,它的工作正常,非常好,因为它应该是。
显示横幅广告后,应用程序工作流程就会继续进行,因此用户可能会点击某处,并将新的UIViewController推送到导航堆栈。当用户返回放置横幅的上一个视图时,所有视图都消失了......没有更多的tableview和bannerView,只是一个空视图!
我无法理解为什么。想法? 我在控制台中没有自动布局错误...
在viewDidload()
中调用addBannerViewToViewfunc addBannerViewToView(_ bannerView: GADBannerView) {
bannerView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(bannerView)
var tableView: UIView?
var ttconstraint: NSLayoutConstraint?
for constraint in view.constraints {
if constraint.firstAnchor == bottomLayoutGuide.topAnchor {
tableView = constraint.secondItem as? UIView
ttconstraint = constraint
}
}
debugPrint(ttconstraint!)
NSLayoutConstraint.deactivate([ttconstraint!])
print("LAST VIEW: \(tableView)")
tableView?.translatesAutoresizingMaskIntoConstraints = false
if #available(iOS 11.0, *) {
NSLayoutConstraint.activate([
bannerView.centerXAnchor.constraint(equalTo: view.centerXAnchor, constant: 0),
bannerView.heightAnchor.constraint(equalToConstant: bannerView.frame.height),
tableView!.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 0),
tableView!.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: 0),
tableView!.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 0),
tableView!.bottomAnchor.constraint(equalTo: bannerView.topAnchor, constant: 0),
bannerView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: 0),
])
} else {
// Fallback on earlier versions
}
}