iOS 14上collectionView調(diào)用scrollToItem不起作用

今天測試提了一個bug赁咙,說點擊下一題的時候,界面沒有刷新題目,還在老題目那里彼水,我說不可能啊崔拥,我這邊好好的,后來一看凤覆,她的機子是iOS 14的链瓦,我說那我適配一下好了。
我的界面層級是一個大的collectionView占據(jù)頁面盯桦,里面的cell的大小跟collectionviewbounds一樣大慈俯。
下面是我的collectionview創(chuàng)建代碼

    lazy var collectionView: UICollectionView = {
        let layout = UICollectionViewFlowLayout()
        layout.itemSize = CGSize(width: SCREEN_WIDTH, height: SCREEN_HEIGHT - NavigationContentTop - SafeAreaInsetsConstantForDeviceWithNotch.bottom - 60)
        layout.sectionInset = UIEdgeInsets.zero
        layout.scrollDirection = .horizontal
        let collectionView = UICollectionView(frame: CGRect.zero, collectionViewLayout: layout)
        collectionView.xh_register(XHOEWebParentCollectionViewCell.self)
        collectionView.dataSource = self
        collectionView.delegate = self
        collectionView.backgroundColor = .clear
        collectionView.showsHorizontalScrollIndicator = false
        collectionView.isPagingEnabled = true
        collectionView.isScrollEnabled = false
        if #available(iOS 11.0, *) {
            collectionView.contentInsetAdjustmentBehavior = .never
        } else {
            self.automaticallyAdjustsScrollViewInsets = false
        }
        
        return collectionView
    }()

我滾動頁面調(diào)用的代碼

self.collectionView.scrollToItem(at: IndexPath(item: collectionViewIndex, section: 0), at: .right, animated: true)

結(jié)果找了半天原因沒找到,因為看起來很正常拥峦,查閱網(wǎng)上的資料贴膘,發(fā)現(xiàn)調(diào)用無效大多是在collectionView尚未布局的時候就調(diào)用了scrollToItem(at: _, at: _, animated: _),跟我的情況不符合
后來想著先用setContentOffset(_, animated: _)試試略号,后來發(fā)現(xiàn)確實可以刑峡,但是滾動的頁數(shù)越多,發(fā)現(xiàn)cell偏移也越厲害璃哟,查看View hierarchy,發(fā)現(xiàn)是cell之間有10的間距氛琢,應(yīng)該是沒有設(shè)置flowLayoutminimumLineSpacing屬性。調(diào)整為0后随闪,重新運行阳似,正常了

但是按理來說沒有設(shè)置minimumLineSpacing不該影響collectionView的跳轉(zhuǎn)才對,于是繼續(xù)檢查collectionView的設(shè)置铐伴,發(fā)現(xiàn)一句可能會影響的代碼

collectionView.isPagingEnabled = true

我們查看isPagingEnabled的文檔

Discussion
If the value of this property is true, the scroll view stops on multiples of the scroll view’s bounds when the user scrolls. The default value is false.

文檔中解釋說scroll view會停止在scroll view的bounds的整數(shù)倍的位置

那么如果沒有設(shè)置minimumLineSpacing(這里我的collectionView是水平滾動的撮奏,所以應(yīng)該只用設(shè)置這個屬性就可以了),那么collectionView在通過scrollToItem(at: _, at: _, animated: _)滾動到指定頁的時候,實際上并沒有滾動整數(shù)倍的scroll view’s bounds 当宴,和isPagingEnabled屬性相違背畜吊,所以說到這里,這個bug其實有兩個解決方式

我把minimumLineSpacing的設(shè)置取消掉户矢,單改為isPagingEnabled = false玲献,測試通過,說明推論是應(yīng)該正確的梯浪。

2020.11.16 更新

最新發(fā)現(xiàn)在iPad上有collectionview在設(shè)置了minimumLineSpacing = 0后調(diào)用scrollToItem(at: _, at: _, animated: _)仍然無效捌年,建議設(shè)置了collectionView.isPagingEnabled = true的改用setContentOffset進行跳轉(zhuǎn)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挂洛,一起剝皮案震驚了整個濱河市礼预,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌虏劲,老刑警劉巖托酸,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件褒颈,死亡現(xiàn)場離奇詭異,居然都是意外死亡励堡,警方通過查閱死者的電腦和手機谷丸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來念秧,“玉大人淤井,你說我怎么就攤上這事布疼√海” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵游两,是天一觀的道長砾层。 經(jīng)常有香客問我,道長贱案,這世上最難降的妖魔是什么肛炮? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮宝踪,結(jié)果婚禮上侨糟,老公的妹妹穿的比我還像新娘。我一直安慰自己瘩燥,他們只是感情好秕重,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著厉膀,像睡著了一般溶耘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上服鹅,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天凳兵,我揣著相機與錄音,去河邊找鬼企软。 笑死庐扫,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的仗哨。 我是一名探鬼主播形庭,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼藻治!你這毒婦竟也來了碘勉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤桩卵,失蹤者是張志新(化名)和其女友劉穎验靡,沒想到半個月后倍宾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡胜嗓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年高职,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辞州。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡怔锌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出变过,到底是詐尸還是另有隱情埃元,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布媚狰,位于F島的核電站岛杀,受9級特大地震影響误辑,放射性物質(zhì)發(fā)生泄漏口锭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一闸盔、第九天 我趴在偏房一處隱蔽的房頂上張望辨宠。 院中可真熱鬧遗锣,春花似錦、人聲如沸嗤形。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽派殷。三九已至还最,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間毡惜,已是汗流浹背拓轻。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留经伙,地道東北人扶叉。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像帕膜,于是被迫代替她去往敵國和親枣氧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344