最新消息:20210917 已从crifan.com换到crifan.org

[基本解决]把自定义UICollectionViewLayout的CustomCollectionViewLayout中的拖动只允许水平和垂直

iOS crifan 1774浏览 0评论

之前已经用:

https://github.com/brightec/CustomCollectionViewLayout

制作出自己要的效果的表格了:

代码详见:

https://github.com/crifan/crifanLib/tree/master/swift/ThirdParty/GridView

但是:

现在页面太灵活,太活动了:

斜着拖动,都允许:

现在希望:

限制出拖动的方向:

只允许:

水平方向

垂直方向

斜着,不允许拖动。

swift UICollectionViewLayout drag

swift UICollectionViewLayout scroll direction

objective c – ios UICollectionView detect scroll direction – Stack Overflow

ios – UICollectionView – Horizontal scroll, horizontal layout? – Stack Overflow

xcode – Change scroll direction in UICollectionView – Stack Overflow

UICollectionView

UICollectionView – NSHipster

UICollectionView drag direction

UICollectionView custom layout drag direction

ios – UICollectionView scrolling in both directions – Stack Overflow

objective c – UICollectionView: How to define a UICollectionViewLayout that supports horizontally and vertically scrolling? – Stack Overflow

mpospese/IntroducingCollectionViews: The sample application to accompany my conference talk on UICollectionView.

UICollectionView custom layout tutorial :: skeuo

看到代码中:

                if section == 0 && index == 0 {
                    attributes.zIndex = 1024
                } else  if section == 0 || index == 0 {
                    attributes.zIndex = 1023
                }

有什么zIndex,

猜测,或许和CollectionView的拖动,有关系?

去搜看看:

uicollectionviewlayoutattributes z index

 ios – UICollectionView setLayout:animated: not preserving zIndex – Stack Overflow

zIndex – Apple Developer Documentation

-》

好像和分层显示,有关系

就是z坐标(相对于x,y坐标而言)

UICollectionViewLayoutAttributes – Apple Developer Documentation

ios – UICollectionView not obeying zIndex of UICollectionViewLayoutAttributes – Stack Overflow

[总结]

还是不方便去控制:

拖动的方向,只是水平或垂直

-》因为:

水平,和,或,垂直,是否可以拖动,取决于:

当前显示的内容,在水平方向,和,或,垂直方向,是否超出了显示的区域

-》如果超过了,则就可以拖动

-》而此处,水平和垂直方向,都超过了显示区域,所以都是可以拖动的

没法限定成,同一时刻,只允许拖动水平或垂直方向。

[后记]

不过,后来去设置了bounds为false:

class GridView: UICollectionView, UICollectionViewDataSource, UICollectionViewDelegate {
    init(columnItemSizeList:[CGSize] = [CGSize](), contentList:[[String]] = [[String]]()) {
        self.bounces = false
}

然后就,突然的,基本上达到了我们所所需要的效果了:

水平滚动:

垂直滚动:

然后向右下角,斜着拖动,:

1.如果本身显示的内容,已经是左上角了,则是没有反应的:

2.否则,虽然会水平和垂直同时滚动,但是也不会弹跳(bound)的很厉害:

-》基本是达到了之前所需要的效果:

水平或垂直滚动的时候,不要滚动的太灵活,太弹跳的感觉。

现在把

UICollectionView(内部是集成了UIScrollView)

self.bounces = false

即可基本是实现类似的效果了。

转载请注明:在路上 » [基本解决]把自定义UICollectionViewLayout的CustomCollectionViewLayout中的拖动只允许水平和垂直

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
100 queries in 0.228 seconds, using 23.33MB memory