不幸的是,由于iOS更新到13,我的应用程序表现不佳。 容器的高度由UISegmentControl元素控制。 挂钩正常工作,并设置了正确的索引。 有3个子容器:
不幸的是,主滚动视图内的容器不会改变其高度。 有人知道这个问题的解决方案吗?
@IBAction func showComponent(_ sender: UISegmentedControl) {
showComponent(index: sender.selectedSegmentIndex)
}
private func showComponent(index: Int) {
currentContainer?.bounds.size.height = 0
currentSegmentedControllerIndex = index
switch index {
case 0:
profileDataContainerView.bounds.size.height = 308
currentContainer = profileDataContainerView
case 1:
addValueContainerView.bounds.size.height = 294
currentContainer = addValueContainerView
case 2:
if let tableView = checkInHistoryContainerView.subviews.last as? UITableView {
checkInHistoryContainerView.bounds.size.height = tableView.contentSize.height
}
currentContainer = checkInHistoryContainerView
default:
break
}
updateContentHeight()
}
答案 0 :(得分:0)
因为它是一个结构。
这将起作用
myView.frame = Frame(....)
这不会
myView.bounds.height = someNumber
答案 1 :(得分:0)
很难确定为什么您的应用程序不能仅使用提供的代码工作,但是您可以记住一些事情。
滚动视图的大小会根据其内容自动调整。尝试调整滚动视图本身,请参见以下链接:how to set scrollview content size in swift 3.0
调整内容大小,然后再重新加载视图。设置新大小后,请尝试确保您的应用正在加载所有视图。该链接可以帮助您更改框架尺寸:Change frame programmatically with auto layout
总的来说,如果不小心,情节提要对于这样的事情是一场灾难。实际上,如果约束条件错误,情节提要往往会给人以成功的幻想。
要检查的最后一件事(我在代码中发现的一个错误)是:segue已经发生了很大的变化,因此请确保您的segue是正确的类型,并且以您想要的方式呈现。这是有关iOS 13中一些主要更改的链接: https://medium.com/@hacknicity/view-controller-presentation-changes-in-ios-13-ac8c901ebc4e
编辑:克里斯回答说您使用的是结构,如果是这种情况,那么它们是正确的,因为您没有正确更改值。
答案 2 :(得分:0)
您可以使用yourview.layer.bounds代替yourview.bounds。