我有一个分段 Controller ,它在屏幕上调用两个 UIViews xib。每个 View 的长度会因内容而异。由于每个 View 的内容不同。 UIView 设置在 ScrollView 中。
当使用分段 Controller 选择 Selected UIView 时,我将其拉到其他 UIView 的前面。 问题是当我向下滚动时,较长的 View 仍然可见。我无法弄清楚如何只让滚动条向下滚动到已被拉到前面的 UIView 的底部。
我在 tabselected 函数中使用 simpleViewX.isHidden
或 simpleViewY.isHidden
但这并没有真正解决问题,因为我仍然可以向下滚动到空白空间。
class foodinfo: UIViewController {
var counter = Int()
@IBOutlet var tabs: UISegmentedControl!
@IBOutlet var shiftView: UIView!
@IBOutlet var theTitleLable: UILabel!
var simpleViewX: UIView!
var simpleViewY: UIView!
var theTitleArray = ["Title1","Title2","Title3","Title4","Title5","Title6","Title7"]
override func viewDidLoad() {
//Different subViews for each selection
if counter == 0 {
simpleViewX = SimpleVC0().view
simpleViewY = SimpleVC1().view
shiftView.addSubview(simpleViewY)
shiftView.addSubview(simpleViewX)
}
if counter == 1 {
simpleViewX = SimpleVC2().view
simpleViewY = SimpleVC3().view
shiftView.addSubview(simpleViewY)
shiftView.addSubview(simpleViewX)
}
if counter == 2 {
simpleViewX = SimpleVC4().view
simpleViewY = SimpleVC5().view
shiftView.addSubview(simpleViewY)
shiftView.addSubview(simpleViewX)
}
if counter == 3 {
simpleViewX = SimpleVC6().view
simpleViewY = SimpleVC7().view
shiftView.addSubview(simpleViewY)
shiftView.addSubview(simpleViewX)
}
if counter == 4 {
simpleViewX = SimpleVC8().view
simpleViewY = SimpleVC9().view
shiftView.addSubview(simpleViewY)
shiftView.addSubview(simpleViewX)
}
if counter == 5 {
simpleViewX = SimpleVC10().view
simpleViewY = SimpleVC11().view
shiftView.addSubview(simpleViewY)
shiftView.addSubview(simpleViewX)
}
if counter == 6 {
simpleViewX = SimpleVC12().view
simpleViewY = SimpleVC13().view
shiftView.addSubview(simpleViewY)
shiftView.addSubview(simpleViewX)
}
}
func getTitle() {
theTitleLable.text = theTitleArray[counter]
}
@IBAction func tabselected(_ sender: Any) {
switch (sender as AnyObject).selectedSegmentIndex {
case 0:
shiftView.bringSubviewToFront(simpleViewX)
break
case 1:
shiftView.bringSubviewToFront(simpleViewY)
break
default:
break
}
}
}
最佳答案
我假设您在 ScrollView 中使用 shiftView
作为“容器”,并使用加载的 simpleViewX
和 simpleViewY
来确定 shiftView
的高度...
不是将简单 View 添加为 shiftView
的 subview ,而是使用垂直 UIStackView
作为 shiftView
的 subview 。添加您的简单 View 作为堆栈 View 的 arrangedSubviews
。要“切换”哪个 View 可见,请隐藏另一个 View 。堆栈 View 将根据剩余的可见 View 自动变短或变高,并且通过将 shiftView
的高度限制为堆栈 View 的高度,您的可滚动高度也将自动设置。
如果您这样做,则不需要 .bringSubviewToFront
。
关于ios - 使用分段 Controller 重叠 UIView 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55054763/