簡體   English   中英

Swift滑動視圖

[英]Swift swipe-able views

我是Swift和iOS開發的新手,我希望設置一系列可以左右滑動的視圖或“卡片”,下一張/上一張卡片留在邊緣,表示它們在那里。 這是在iOS App Store預覽中完成的:

應用商店預覽

到目前為止,我真正發現的是這篇中篇文章: iOS Swift:Swipe View 但是我不確定這是否是我上面要求的正確方法,而且我也不知道如何讓下一張/上一張卡片保持在每次滑動的邊緣。

有沒有人有任何實現這個的提示?

最簡單的方法是使用UICollectionViewUICollectionViewFlowLayout UICollectionViewFlowLayout是開箱即用的,功能非常強大。

基本上你需要:

  1. UICollectionView添加到視圖控制器。
  2. 默認情況下, UICollectionView選擇Flow布局。
  3. 配置UICollectionViewFlowLayout
    • 將滾動方向設置為水平
    • 定義項目大小和間距。 請記住,您只需要一個項目就可以完全看到; 此外,左側和右側的空間也應該是可見的; 你需要更多地展示上一張和下一張卡片,所以一些基本的數學等着你:)。 一個小技巧可以使你的第一張和最后一張牌正確居中:你應該指定垂直部分插入等於前一張牌的可見寬度加上牌之間的空格。

上面的步驟應該足以具有垂直可滾動的卡片視圖。 但它看起來不會很棒! 為了使它變得更好,您可能需要在用戶結束滾動后完美地居中最合適的卡片。 要實現粘性滾動,您需要使用以下UICollectionViewDelegate方法:

// compute collection view content offset in method bellow
override func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {
    ...
}

// compute targetContentOffset in method bellow 
override func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
    ...
}

...最后提示:在視圖控制器的代碼中使集合視圖減速看起來很快:

self.collectionView?.decelerationRate = UIScrollViewDecelerationRateFast

尋呼指標:

在您提供的示例中,有一個分頁控件可以反映當前項目和整體項目計數。 您需要手動添加UIPageControll ; 你可以在故事板中做到這一點。 更新頁面控制狀態的最佳位置是:

// method in UICollectionView delegate that you need to define.
// update your paging info in method bellow.
override func scrollViewDidScroll(scrollView: UIScrollView) {
    ...    
}

備注:

處理我列出的滾動視圖的方法由UICollectionViewDelegateUIScrollViewDelegate繼承。 UICollectionView本身派生自UIScrollViewDelegate

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM