device.height - button.height
)。此按钮的背景颜色与底部内容的背景颜色相匹配。不同的背景颜色看起来很不明显,没有将底部按钮与内容视图分开,所以虽然底部内容不可见,但我希望边框是粘性的,并且看起来位于底部上方按钮(图表:红线)。
一个小注释:我在IB中使用AutoLayout,但我为边界约束创建了一个IBOutlet,我可以在代码中轻松操作。
答案 0 :(得分:3)
这是一个完成这项工作的lib: https://github.com/ericcastro/ECStretchableHeaderView
(它与示例中的UItableView一起使用,但实现基于UIScrollview)
您必须通过更改逻辑来更新代码: 这里的视图位于顶部,但整个原则就在那里!
答案 1 :(得分:1)
您可以创建两个边框。 第一个是滚动视图中底部内容顶部的动态边框。 第二个是滚动视图外部按钮顶部的粘性边框。
第一个边框可见时,应隐藏第二个边框。为此,您应该注册if (Input.GetAxis("WalkButton") > .5f) {
// code goes here to make character run right
} else if (Input.GetAxis("WalkButton") > 0f) {
// code goes here to make character walk right
}
。实施方法UIScrollViewDelegate
。只需检查第一个边框是否高于第二个边框。这可以通过以下方式完成:
scrollViewDidScroll(_:)
这对您来说可能不是100%正确,因为不清楚您的if firstBorder.frame.origin.y < scrollView.contentOffset.y + scrollView.frame.height {
// firstBorder is on the screen, hide the secondBorder...
secondBorder.hidden = true
} else {
secondBorder.hidden = false
}
是否在按钮上方或是否重叠。如果边框隐藏得太早或太晚,请调整它。
如果您的按钮是透明的,您还应隐藏第一个边框(如果未显示),因为它可能位于按钮下方。然后,只需将代码UIScrollView
和firstBorder.hidden = false
添加到代码中。
答案 2 :(得分:0)
我会采取以下步骤:
scrollView
。UIScrollViewDelegate
添加到滚动视图中,该视图至少实现scrollViewDidScroll(_)
。在此方法中,检查滚动内容的最底部位置。如果该位置落在您在步骤#3中设置的底部内容插入的某处,则拉伸或以其他方式垂直重新定位您的真棒底部内容相同的数量。 如果我有时间,我会掀起一个做这件事的样本。
答案 3 :(得分:0)
首先我想到了至少两个简单的解决方案。
关键是找到交叉点:
滚动视图中的红线从按钮下方出来或进入按钮下方的内容大小值。
选项1: 在内容大小值接近交叉点时,在按钮顶部添加另一条红线并在scrollViewDidScroll中隐藏/显示(隐藏属性)
选项2: 内容大小值是否接近交叉点移除约束并将红线的超视图从scrollview更改为按钮或相反。重新添加特定superview的约束。显然你需要在代码中这样做。