Ios 当UIScrollView滚动时,使静态UIView保持粘性 我有一个比设备高度长得多的滚动视图(图表:words) 在滚动视图的底部是一些具有不同背景颜色的底部内容(图表:法国印刷) 为了将底部内容与文字分开,我创建了一个1pt高的UIView作为边框(图:红线) 我有一个按钮,位于设备底部,在滚动视图之外(滚动视图是device.height-button.height)。此按钮的背景色与底部内容的背景色匹配
不同的背景颜色看起来很不稳定,没有什么东西将底部按钮与内容视图分开,因此,虽然底部内容不可见,但我希望边框是粘性的,并且看起来位于底部按钮上方(图:红线) 一个小提示:我在IB中使用AutoLayout,但是我为边界约束创建了一个IBOutlet,我可以在代码中轻松操作它 我将采取以下步骤:Ios 当UIScrollView滚动时,使静态UIView保持粘性 我有一个比设备高度长得多的滚动视图(图表:words) 在滚动视图的底部是一些具有不同背景颜色的底部内容(图表:法国印刷) 为了将底部内容与文字分开,我创建了一个1pt高的UIView作为边框(图:红线) 我有一个按钮,位于设备底部,在滚动视图之外(滚动视图是device.height-button.height)。此按钮的背景色与底部内容的背景色匹配,ios,objective-c,uiscrollview,Ios,Objective C,Uiscrollview,不同的背景颜色看起来很不稳定,没有什么东西将底部按钮与内容视图分开,因此,虽然底部内容不可见,但我希望边框是粘性的,并且看起来位于底部按钮上方(图:红线) 一个小提示:我在IB中使用AutoLayout,但是我为边界约束创建了一个IBOutlet,我可以在代码中轻松操作它 我将采取以下步骤: 将按钮置于滚动视图之外的视图中 将精彩的底部内容(我认为是Bender头部的图片)放在按钮所在的同一视图中,并将其约束到顶部、左侧和右侧边缘 将滚动视图内容插图的底部尺寸设置为等于底部内容视图的高度。这将告
滚动视图
之外的视图中UIScrollViewDelegate
添加到滚动视图,该视图至少实现了scrollViewDidScroll(33;)
。在此方法中,检查滚动内容的最底部位置。如果该位置落在您在步骤3中设置的底部内容插图中的某个位置,则拉伸或以其他方式垂直重新定位相同数量的底部内容李>
如果我有时间,我会制作一个这样的样本。我首先想到的至少有两个简单的解决方案 关键是找到交叉点: 内容大小值,滚动视图上的红线从按钮下方出现或进入按钮下方 选项1: 在按钮顶部添加另一条红线,当内容大小值接近交叉点时,在scrollViewDidScroll中隐藏/显示(隐藏属性) 选项2:
无论内容大小值是否接近交叉点,请删除约束并将红线的superview从scrollview更改为button或相反。为特定superview重新添加约束。显然,您需要在代码中这样做。这里有一个执行此任务的库: (它在示例中与UItableView一起工作,但实现基于UIScrollview) 您必须通过更改逻辑来更新代码:
这里的视图在顶部,但整个原则都在那里 您可以创建两个边框。 第一个是滚动视图中底部内容顶部的动态边框。 第二个是滚动视图外按钮顶部的粘性边框 当第一个边框可见时,应隐藏第二个边框。为此,您应该注册一个
UIScrollViewDelegate
。实现方法scrollViewDidScroll(:)
。只需检查第一个边界是否在第二个边界之上。这可以通过以下方式实现:
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
}
如果firstBorder.frame.origin.y
这对您来说可能不是100%正确,因为不清楚您的UIScrollView
是否在按钮上方结束,或者它们是否重叠。如果边框隐藏得太早或太晚,请进行调整
如果按钮是透明的,如果没有显示第一个边框,也应该隐藏它,因为它可能位于按钮下方。然后只需将行
firstBorder.hidden=false
和firstBorder.hidden=true
添加到代码中即可。该死,这主意太简单了!