获取 UIScrollView 的默认滚动方向 Swift
Get default scroll direction for UIScrollView Swift
我有一个应用程序使用了更多的 UIScrollViews
和 extensions
,例如 UICollectionViews
和 UITableViews
,为了一点活力,我创建了一些通用函数来帮助我有一些填充/边距。
我的函数是为 UIScrollView
创建的 extensions
,我想在滚动视图为 only vertical
.
时使用它们
我的问题
如何找到 UIScrollView 的滚动方向?
我已经找到了很多关于如何找到滚动方向的答案,但是我需要在 UIScrollView
初始化时找到它的滚动方向,如果它是 vertical or horizontal
。
感谢您的宝贵时间!
为了在滚动之前获得滚动方向,我能想到的一个解决方案是对有问题的 UIScrollView 的类型做出相应的反应。
所以第一步检查它是 UIScrollView、UICollectionView 还是 UITableView。
以 UITableView 为例
我认为这里的合理假设是滚动方向是垂直的
以UIScrollView为例
这可能有点棘手,但我想在这里您必须按照 Desdenova 的建议将滚动视图的内容大小与滚动视图的框架进行比较,这可以建议您是否可以水平和/或垂直滚动。
在 UICollectionView 的情况下
此数据将位于 UICollectionView 的布局中。
例如,我使用 FlowLayout 在 Storyboard 中设置了一个基本的 UICollectionView,其中没有任何数据。
然后我在适当的地方添加这段代码
if let layout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout
{
if layout.scrollDirection == .horizontal {
print("horizontal")
}
else {
print("vertical")
}
}
这会打印出 horizontal
。
对于 UIScrollView,您必须使用 UIScrollViewDelegate scrollViewDidScroll
,它可以帮助您确定 UIScrollView 的滚动方向,您还必须添加一些检查以获取方向:
func scrollViewDidScroll(scrollView: UIScrollView!) {
// Update ScrollView direction
if self.lastContentOffset.y > scrollView.contentOffset.y && self.lastContentOffset.y < scrollView.contentOffset.y {
// Vertical Scroll
} else {
// Horizontal Scroll
}
}
我有一个应用程序使用了更多的 UIScrollViews
和 extensions
,例如 UICollectionViews
和 UITableViews
,为了一点活力,我创建了一些通用函数来帮助我有一些填充/边距。
我的函数是为 UIScrollView
创建的 extensions
,我想在滚动视图为 only vertical
.
我的问题
如何找到 UIScrollView 的滚动方向?
我已经找到了很多关于如何找到滚动方向的答案,但是我需要在 UIScrollView
初始化时找到它的滚动方向,如果它是 vertical or horizontal
。
感谢您的宝贵时间!
为了在滚动之前获得滚动方向,我能想到的一个解决方案是对有问题的 UIScrollView 的类型做出相应的反应。
所以第一步检查它是 UIScrollView、UICollectionView 还是 UITableView。
以 UITableView 为例
我认为这里的合理假设是滚动方向是垂直的
以UIScrollView为例
这可能有点棘手,但我想在这里您必须按照 Desdenova 的建议将滚动视图的内容大小与滚动视图的框架进行比较,这可以建议您是否可以水平和/或垂直滚动。
在 UICollectionView 的情况下
此数据将位于 UICollectionView 的布局中。
例如,我使用 FlowLayout 在 Storyboard 中设置了一个基本的 UICollectionView,其中没有任何数据。
然后我在适当的地方添加这段代码
if let layout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout
{
if layout.scrollDirection == .horizontal {
print("horizontal")
}
else {
print("vertical")
}
}
这会打印出 horizontal
。
对于 UIScrollView,您必须使用 UIScrollViewDelegate scrollViewDidScroll
,它可以帮助您确定 UIScrollView 的滚动方向,您还必须添加一些检查以获取方向:
func scrollViewDidScroll(scrollView: UIScrollView!) {
// Update ScrollView direction
if self.lastContentOffset.y > scrollView.contentOffset.y && self.lastContentOffset.y < scrollView.contentOffset.y {
// Vertical Scroll
} else {
// Horizontal Scroll
}
}