使用Koloda View在Swift中構(gòu)建類似Tinder(國內(nèi)的探探社交應用)的卡片

在過去幾年中,隨著社交網(wǎng)絡應用程序的普及,約會應用程序也迅速出現(xiàn)。其中一個最突出的應用是Tinder。它不僅是一個很棒的約會應用程序,而且還在視圖動畫或過渡方面創(chuàng)建了新的iOS趨勢,例如Tinder Card Swipe或Tinder UI

image

在這個iOS教程中,我們將學習如何在Swift中構(gòu)建Tinder Swipe Cards,以便您可以將此功能包含在iOS應用程序中。目前有一些圖庫支持這種類型的可滑動卡片,其中一個是KolodaView。在本教程中,我們將向您展示如何使用代碼示例在Swift中實現(xiàn)此動畫。

1.簡介

要了解有關Koloda View庫的一般詳細信息,請參閱此處的官方文檔。在這一部分中,我們將為您提供一個高級概述。這個庫的亮點是靈感來自Tinder的滑動到界面。該團隊 在解釋如何設計UI及其工作原理方面做得非常出色。您可以閱讀他們的教程以了解有關其作用機制的更多信息。

Koloda View庫通過利用協(xié)議使用相同的 dataSourcedelegate設計模式。這些模式的靈感來自UITableView和UICollectionView設計。iOS工程師使用這個庫非常方便,因為他們已經(jīng)熟悉了整體架構(gòu)模式。我們需要做的就是使我們的視圖控制器符合兩個協(xié)議,并處理必要的功能?,F(xiàn)在讓我們開始具體學習如何構(gòu)建像Tinder這樣的應用程序,通過利用Koloda View來獲得Tinder-esque卡片接口。

image

2.在Swift中構(gòu)建iOS Tinder卡

首先,由于這是第三方 庫,您需要從Carthage,CocoaPod或手動(“拖放”)安裝它,以便將其作為Xcode項目的依賴項包含在內(nèi)。像往常一樣我們將通過CocoaPods安裝KolodaView 。因此,在Podfile中添加以下pod依賴項:

pod “Koloda”

讓我們運行新創(chuàng)建的Xcode項目,然后在工作區(qū)中使用相同的名稱編寫代碼。這個Swift教程的主題將是Marvel漫威的英雄。當我們寫這篇文章的時候,整個世界都在為Endgame復仇者4瘋狂- 這十年的電影讓我們想把它作為一個 關于長途旅行和鋼鐵俠的致敬。如果你不熟悉這部電影,不用擔心,無論如何你都會完全理解這部教程(哈哈哈哈)。現(xiàn)在,讓我們寫一些代碼。

第1步:設置Tinder UI

通過使用Interface Builder,將UIView對象拖到故事板上。為它添加約束(您可以參考我們的方式或添加您自己的約束)。在Identity Inspector中, 我們?yōu)閁IView對象設置了一個自定義類(KolodaView),如下所示:

koloda swift例子

注意將module設置為Koloda,否則,您的應用程序?qū)rash。之后,將IBOutlet連接從屏幕上的UIView拖到UIViewController。不要忘記導入Koloda庫,以便代碼編譯成功。

第2步:遵守DataSource和delegate協(xié)議**

在視圖控制器的*viewDidLoad *中,讓我們添加以下代碼段

override func viewDidLoad(){ 
super.viewDidLoad()
  kolodaView.dataSource = self 
  kolodaView.delegate = self 
} 

正如我們所說的,我們遵守這些協(xié)議是在相同的方式,類似我們一直使用的UITableViewUICollectionView。 我們已經(jīng)分離了KolodaView,將****dataSource、delegate給他們自己的擴展,以便更容易解釋:

extension ViewController: KolodaViewDelegate {
  func kolodaDidRunOutOfCards(_ koloda: KolodaView) {
      koloda.reloadData()
  }

  func koloda(_ koloda: KolodaView, didSelectCardAt index: Int) {
      let alert = UIAlertController(title: "Congratulation!", message: "Now you're \(images[index])",               
      preferredStyle: .alert)
      alert.addAction(UIAlertAction(title: "OK", style: .default))
      self.present(alert, animated: true)
  }
}
extension ViewController: KolodaViewDataSource {

  func kolodaNumberOfCards(_ koloda:KolodaView) -> Int {
        return images.count
  }

  func koloda(_ koloda: KolodaView, viewForCardAt index: Int) -> UIView {
    let view = UIImageView(image: UIImage(named: images[index]))
    view.layer.cornerRadius = 20
    view.clipsToBounds = true
    return view
  }
}

如您所見,KolodaViewDataSource中的兩個委托方法與UITableViewDataSource的功能相同。在那里,我們聲明物品的數(shù)量(Tinder卡)以及它們的顯示方式。對于KolodaViewDelegate,您將處理每個項目(在每張可刷卡片上)的執(zhí)行操作。這些只是一些基本的例子。實際上,您可以使用此庫支持的許多協(xié)議方法,如下所示:</pre>

對于 KolodaViewDataSource

func kolodaSpeedThatCardShouldDrag(_ koloda:KolodaView) - > DragSpeed 
func koloda(_ koloda:KolodaView,viewForCardOverlayAt index:Int) - > OverlayView? 

這里有一個注意事項,要在滑動(左/右)上設置自定義疊加操作,您應該在OverlayView中覆蓋didSet of overlayState屬性。

對于 **KolodaViewDelegate, **您可以在其文檔中找到此庫支持的所有協(xié)議。在這個iOS教程中,我想提一些我們認為最重要的協(xié)議。

func kolodaDidRunOutOfCards(_ koloda:KolodaView)

此功能非常 值得注意,因為在視圖用完卡片后,您無法將UI留空。您必須處理這種情況,例如隱藏Koloda或顯示告訴用戶沒有其他卡的視圖。請記住,優(yōu)雅地對待您的空狀態(tài)是一種令人敬畏的設計技巧,并使您的移動應用程序脫穎而出。

func koloda (_ koloda:KolodaView,didSelectCardAt index:Int )

當用戶點擊Tinder卡時(類似于UITableViewDelegate的didSelectRowAt),將調(diào)用此函數(shù)。例如,在我們的iOS應用示例中,我們顯示了警報。其余的委托方法主要涉及動畫,所以你應該仔細研究它們,使你的約會應用程序更豐富的視覺功能?,F(xiàn)在,讓我們運行應用程序來查看我們的英雄。

** 3.結(jié)論**

好的!我們成功地使用KolodaView構(gòu)建了一個簡單的Tinder UI Card Swipe Swift。在不久的將來,這種行為 將變得越來越普遍,所以我們希望你會喜歡這篇文章。如果您喜歡,請不要忘記分享這篇文章。此外,如果您正在尋找建立自己的約會應用程序,您可以通過這個教程設計和開發(fā)。

快樂的編碼!

PS:這個項目中使用的所有圖像都可以在這里下載:https://www.pixelstalk.net/thor-backgrounds-free。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容