Ios 在滚动视图中更改UIView,同时/更新滚动视图高度-Swift 3/Xcode 8
我有一个带滚动视图的普通ViewController。滚动视图中有一些视图、标签和一些按钮。所有这些下面都是一个UIView。每当按下其中一个按钮时,UIView就会向其传递多个视图控制器。传递到UIView的每个视图控制器都是一个不同高度的视图控制器 要解释的图片: 如何调整滚动视图,使其适合从按下按钮传入的新视图控制器 更新 这是我的代码:Ios 在滚动视图中更改UIView,同时/更新滚动视图高度-Swift 3/Xcode 8,ios,swift3,xcode8,Ios,Swift3,Xcode8,我有一个带滚动视图的普通ViewController。滚动视图中有一些视图、标签和一些按钮。所有这些下面都是一个UIView。每当按下其中一个按钮时,UIView就会向其传递多个视图控制器。传递到UIView的每个视图控制器都是一个不同高度的视图控制器 要解释的图片: 如何调整滚动视图,使其适合从按下按钮传入的新视图控制器 更新 这是我的代码: @IBAction func didPressTab(_ sender: UIButton) { let previousIndex =
@IBAction func didPressTab(_ sender: UIButton) {
let previousIndex = selectedIndex
selectedIndex = sender.tag
buttons[previousIndex].isSelected = false
let previousVC = viewControllers[previousIndex]
previousVC.willMove(toParentViewController: nil)
previousVC.view.removeFromSuperview()
previousVC.removeFromParentViewController()
sender.isSelected = true
let vc = viewControllers[selectedIndex]
addChildViewController(vc)
print("1. NEW VIEW HEIGHT \(vc.view.frame.height)")
print("1. SCROLL VIEW HEIGHT \(scrollView.contentSize.height)")
print("1. VIEW CONTROLLER HEIGHT \(self.view.frame.height)")
print("1. CV HEIGHT \(contentView.frame.height)")
contentView.layoutIfNeeded()
height = vc.view.frame.size.height
contentView.translatesAutoresizingMaskIntoConstraints = true
contentView.frame.size.height = vc.view.frame.height
vc.view.frame = contentView.bounds
scrollView.contentSize.height = staticView.frame.height + height!
contentView.addSubview(vc.view)
print("2. NEW VIEW HEIGHT \(vc.view.frame.height)")
print("2. SCROLL VIEW HEIGHT \(scrollView.contentSize.height)")
print("2. VIEW CONTROLLER HEIGHT \(self.view.frame.height)")
print("2. CV HEIGHT \(contentView.frame.height)")
vc.didMove(toParentViewController: self)
}
if selectedIndex == 0 {
vc.view.frame.size.height = 480
}
if selectedIndex == 1 {
vc.view.frame.size.height = 448
}
if selectedIndex == 2 {
vc.view.frame.size.height = 715
}
if selectedIndex == 3 {
vc.view.frame.size.height = 480
}
我能够改变高度,但它最终使UIView的大小达到普通VC(667)的大小,这不是我所需要的,因为一些ViewController的高度只有450 每当嵌入式视图控制器更改时,必须重新计算滚动视图内容大小的高度。 新高度为图像视图高度+按钮容器高度+内容视图高度。
显然,您还必须调整容器视图的高度。我找到了解决方案 前言: 视图控制器具有假定的大小。(手机屏幕的大小)。这就是为什么每当我展示一个视图时,在UIView中添加的视图总是667-(iPhone 6屏幕大小)。为了解决这个问题,我做了以下几点: 代码:
@IBAction func didPressTab(_ sender: UIButton) {
let previousIndex = selectedIndex
selectedIndex = sender.tag
buttons[previousIndex].isSelected = false
let previousVC = viewControllers[previousIndex]
previousVC.willMove(toParentViewController: nil)
previousVC.view.removeFromSuperview()
previousVC.removeFromParentViewController()
sender.isSelected = true
let vc = viewControllers[selectedIndex]
addChildViewController(vc)
print("1. NEW VIEW HEIGHT \(vc.view.frame.height)")
print("1. SCROLL VIEW HEIGHT \(scrollView.contentSize.height)")
print("1. VIEW CONTROLLER HEIGHT \(self.view.frame.height)")
print("1. CV HEIGHT \(contentView.frame.height)")
contentView.layoutIfNeeded()
height = vc.view.frame.size.height
contentView.translatesAutoresizingMaskIntoConstraints = true
contentView.frame.size.height = vc.view.frame.height
vc.view.frame = contentView.bounds
scrollView.contentSize.height = staticView.frame.height + height!
contentView.addSubview(vc.view)
print("2. NEW VIEW HEIGHT \(vc.view.frame.height)")
print("2. SCROLL VIEW HEIGHT \(scrollView.contentSize.height)")
print("2. VIEW CONTROLLER HEIGHT \(self.view.frame.height)")
print("2. CV HEIGHT \(contentView.frame.height)")
vc.didMove(toParentViewController: self)
}
if selectedIndex == 0 {
vc.view.frame.size.height = 480
}
if selectedIndex == 1 {
vc.view.frame.size.height = 448
}
if selectedIndex == 2 {
vc.view.frame.size.height = 715
}
if selectedIndex == 3 {
vc.view.frame.size.height = 480
}
这是放在IBAction里面的。就在定义了vc之后。我已经发布了我的代码。我已经做了你提到的事情,高度确实发生了变化,只是大小不合适,而且每个视图的高度都是一样的,尽管它们的高度不同。