├── .gitignore ├── .swift-version ├── .swiftlint.yml ├── .travis.yml ├── BWCollectionView.framework.zip ├── CHANGELOG.md ├── Carthage └── Build │ └── iOS │ ├── 9D67454A-3328-3184-BD45-CD5A3ABB103D.bcsymbolmap │ ├── B8D5F415-E7C9-3A2D-80D3-9C01E9693B36.bcsymbolmap │ ├── BWCollectionView.framework.dSYM │ └── Contents │ │ ├── Info.plist │ │ └── Resources │ │ └── DWARF │ │ └── BWCollectionView │ └── BWCollectionView.framework │ ├── BWCollectionView │ ├── Headers │ ├── BWCollectionView-Swift.h │ └── BWCollectionView.h │ ├── Info.plist │ └── Modules │ ├── BWCollectionView.swiftmodule │ ├── arm.swiftdoc │ ├── arm.swiftmodule │ ├── arm64.swiftdoc │ ├── arm64.swiftmodule │ ├── i386.swiftdoc │ ├── i386.swiftmodule │ ├── x86_64.swiftdoc │ └── x86_64.swiftmodule │ └── module.modulemap ├── CollectionNode.podspec ├── CollectionNode.xcodeproj ├── project.pbxproj └── xcshareddata │ └── xcschemes │ └── CollectionNode.xcscheme ├── CollectionNode ├── BWCollectionView.h └── Info.plist ├── CollectionNodeExample ├── Base.lproj │ └── LaunchScreen.storyboard ├── Emoji.swift ├── EmojiItem.swift ├── EmojiModel.swift ├── GameScene.swift ├── Info.plist └── Support │ ├── AppDelegate.swift │ ├── Assets.xcassets │ ├── Alien.imageset │ │ ├── Contents.json │ │ └── extraterrestrial-alien_1f47d.png │ ├── AppIcon.appiconset │ │ └── Contents.json │ ├── Contents.json │ ├── HeartFace.imageset │ │ ├── Contents.json │ │ └── smiling-face-with-heart-shaped-eyes_1f60d.png │ ├── SmileyFace.imageset │ │ ├── Contents.json │ │ └── grinning-face_1f600.png │ └── SpaceInvader.imageset │ │ ├── Contents.json │ │ └── alien-monster_1f47e.png │ ├── Base.lproj │ └── Main.storyboard │ └── GameViewController.swift ├── CollectionNodeTv ├── CollectionNodeTv.h └── Info.plist ├── CollectionNodeTvTests ├── CollectionNodeTvTests.swift └── Info.plist ├── CollectionNodeUnitTests ├── CollectionNodeUnitTests.swift ├── Info.plist └── mockGameScene.swift ├── ISSUE_TEMPLATE.md ├── LICENSE ├── README.md ├── Source └── CollectionNode.swift ├── iphonePreview.gif └── tiles.gif /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.gitignore.io/api/swift,xcode,macos 3 | 4 | ### macOS ### 5 | *.DS_Store 6 | .AppleDouble 7 | .LSOverride 8 | 9 | # Icon must end with two \r 10 | Icon 11 | 12 | # Thumbnails 13 | ._* 14 | 15 | # Files that might appear in the root of a volume 16 | .DocumentRevisions-V100 17 | .fseventsd 18 | .Spotlight-V100 19 | .TemporaryItems 20 | .Trashes 21 | .VolumeIcon.icns 22 | .com.apple.timemachine.donotpresent 23 | 24 | # Directories potentially created on remote AFP share 25 | .AppleDB 26 | .AppleDesktop 27 | Network Trash Folder 28 | Temporary Items 29 | .apdisk 30 | 31 | ### Swift ### 32 | # Xcode 33 | # 34 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 35 | 36 | ## Build generated 37 | build/ 38 | DerivedData/ 39 | 40 | ## Various settings 41 | *.pbxuser 42 | !default.pbxuser 43 | *.mode1v3 44 | !default.mode1v3 45 | *.mode2v3 46 | !default.mode2v3 47 | *.perspectivev3 48 | !default.perspectivev3 49 | xcuserdata/ 50 | 51 | ## Other 52 | *.moved-aside 53 | *.xccheckout 54 | *.xcscmblueprint 55 | 56 | ## Obj-C/Swift specific 57 | *.hmap 58 | *.ipa 59 | *.dSYM.zip 60 | *.dSYM 61 | 62 | ## Playgrounds 63 | timeline.xctimeline 64 | playground.xcworkspace 65 | 66 | # Swift Package Manager 67 | # 68 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. 69 | # Packages/ 70 | # Package.pins 71 | .build/ 72 | 73 | # CocoaPods - Refactored to standalone file 74 | 75 | # Carthage - Refactored to standalone file 76 | 77 | # fastlane 78 | # 79 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 80 | # screenshots whenever they are needed. 81 | # For more information about the recommended setup visit: 82 | # https://docs.fastlane.tools/best-practices/source-control/#source-control 83 | 84 | fastlane/report.xml 85 | fastlane/Preview.html 86 | fastlane/screenshots 87 | fastlane/test_output 88 | 89 | ### Swift.Carthage Stack ### 90 | # Carthage 91 | # 92 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 93 | # Carthage/Checkouts 94 | 95 | Carthage/Build 96 | 97 | ### Swift.CocoaPods Stack ### 98 | ## CocoaPods GitIgnore Template 99 | 100 | # CocoaPods - Only use to conserve bandwidth / Save time on Pushing 101 | # - Also handy if you have a lage number of dependant pods 102 | # - AS PER https://guides.cocoapods.org/using/using-cocoapods.html NEVER IGONRE THE LOCK FILE 103 | Pods/ 104 | 105 | ### Xcode ### 106 | # Xcode 107 | # 108 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 109 | 110 | ## Build generated 111 | 112 | ## Various settings 113 | 114 | ## Other 115 | 116 | ### Xcode Patch ### 117 | *.xcodeproj/* 118 | !*.xcodeproj/project.pbxproj 119 | !*.xcodeproj/xcshareddata/ 120 | !*.xcworkspace/contents.xcworkspacedata 121 | /*.gcno 122 | 123 | # End of https://www.gitignore.io/api/swift,xcode,macos 124 | -------------------------------------------------------------------------------- /.swift-version: -------------------------------------------------------------------------------- 1 | 4.0 2 | -------------------------------------------------------------------------------- /.swiftlint.yml: -------------------------------------------------------------------------------- 1 | disabled_rules: # rule identifiers to exclude from running 2 | - colon 3 | - comma 4 | - control_statement 5 | opt_in_rules: # some rules are only opt-in 6 | - empty_count 7 | # Find all the available rules by running: 8 | # swiftlint rules 9 | included: # paths to include during linting. `--path` is ignored if present. 10 | - Source 11 | excluded: # paths to ignore during linting. Takes precedence over `included`. 12 | - Carthage 13 | - Pods 14 | - Source/ExcludedFolder 15 | - Source/ExcludedFile.swift 16 | # configurable rules can be customized from this configuration file 17 | # binary rules can set their severity level 18 | force_cast: warning # implicitly 19 | force_try: 20 | severity: warning # explicitly 21 | # rules that have both warning and error levels, can set just the warning level 22 | # implicitly 23 | line_length: 110 24 | # they can set both implicitly with an array 25 | line_length: 26 | ignores_comments: true 27 | type_body_length: 28 | - 300 # warning 29 | - 400 # error 30 | # or they can set both explicitly 31 | file_length: 32 | warning: 500 33 | error: 1200 34 | # naming rules can set warnings/errors for min_length and max_length 35 | # additionally they can set excluded names 36 | type_name: 37 | min_length: 4 # only warning 38 | max_length: # warning and error 39 | warning: 40 40 | error: 50 41 | excluded: iPhone # excluded via string 42 | identifier_name: 43 | min_length: # only min_length 44 | error: 2 # only error 45 | excluded: # excluded via string array 46 | - row 47 | - id 48 | - URL 49 | - GlobalAPIKey 50 | - ans 51 | trailing_whitespace: 52 | ignores_empty_lines: true 53 | reporter: "xcode" # reporter type (xcode, json, csv, checkstyle, junit, html, emoji) -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: swift 2 | osx_image: xcode9 3 | xcode_project: BWCollectionViewExample.xcodeproj 4 | xcode_scheme: BWCollectionView 5 | xcode_sdk: iphonesimulator9.3 6 | env: 7 | global: 8 | - FRAMEWORK_NAME=BWCollectionView 9 | before_install: 10 | - brew update 11 | - brew outdated carthage || brew upgrade carthage 12 | before_deploy: 13 | - carthage build --no-skip-current 14 | - carthage archive BWCollectionView 15 | deploy: 16 | provider: releases 17 | api_key: 18 | secure: UgJ6hwkE4C0Zd3fP0RZaT6DEKPfC3YClKwPI5p9TfTBYY2Qu9pyC6eJhOta+muZU3Att5XMzoxb9tQ7+x5qAd219uxc9dUKI9JslxyAV8gJe2Ss9M+Ss6Nwf3zy4TXWdTWHjKD3QO742rd4n4cguqyASayhTFhHyC0Hk1sUPJqcjAZIQ9eOdK1MeT01yTEnJ+fR1JuHuI2nKXhzwo3Pcsm7sRchadL0LPwoxr8vBzz6gxZHXDK7LsWqE+mNEnmAQfZBixGx7g0xicKbgPzI/L1AxPnoQjrijVUi6d8o3C+VuEvz/DrGtbldIH/QYjZngwC8lqdRuyuA93KU+QrqK4rN7DVjGw4oMDRZUFPQWJP1jZAeLLPwSMcLiYoj/JoAhWHDFXYbMS02H22fVL1pv1Z3DCJNXCEm/oAouwx60xrtxzURFW7kkDAO2LsI0SmbVIKwzt8qYxp5ASoXkA7+Tn3XT6NyfFMfeSN6soNsNd5MMHTKGbm2OP4y6VQVGX0IzLr+1R63toIhb1X0l8oC1rf9PRb5KwxAd4tIjdJR7AlzE5kmH6YMLQYjaAkoAtH8sIIlPkM21dZlcJseUXoA0xZWA6TCoX6MtNFEnkinAqig/WIGIlgWH6D0G+4dXccaQw9SojXw/w8wGEi+bV3cUHjoGdSjbwCdDwLndjiBu1Vk= 19 | file: BWCollectionView.framework.zip 20 | skip_cleanup: true 21 | on: 22 | repo: bwide/BWCollectionView 23 | tags: true 24 | -------------------------------------------------------------------------------- /BWCollectionView.framework.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bwide/CollectionNode/c836ecafa7673645c99152b40fc87ff80aa8a150/BWCollectionView.framework.zip -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 1.1.0 2 | - Conversion to swift 4 3 | - Added on CocoaPods 4 | 5 | ## 1.1.2 6 | - fixed crash on update method 7 | -------------------------------------------------------------------------------- /Carthage/Build/iOS/9D67454A-3328-3184-BD45-CD5A3ABB103D.bcsymbolmap: -------------------------------------------------------------------------------- 1 | BCSymbolMap Version: 2.0 2 | __TToFC16BWCollectionView16BWCollectionViewg5indexSi 3 | __TToFC16BWCollectionView16BWCollectionViews5indexSi 4 | __TFC16BWCollectionView16BWCollectionViews5indexSi 5 | __TToFC16BWCollectionView16BWCollectionViewg7spacingV12CoreGraphics7CGFloat 6 | __TToFC16BWCollectionView16BWCollectionViews7spacingV12CoreGraphics7CGFloat 7 | __TFC16BWCollectionView16BWCollectionViews7spacingV12CoreGraphics7CGFloat 8 | __TToFC16BWCollectionView16BWCollectionViewg12dampingRatioSd 9 | __TToFC16BWCollectionView16BWCollectionViews12dampingRatioSd 10 | __TToFC16BWCollectionView16BWCollectionViewcfT2atCSo6SKView_S0_ 11 | __TFC16BWCollectionView16BWCollectionViewCfT5coderCSo7NSCoder_GSqS0__ 12 | __TFC16BWCollectionView16BWCollectionViewcfT5coderCSo7NSCoder_GSqS0__ 13 | __TToFC16BWCollectionView16BWCollectionViewcfT5coderCSo7NSCoder_GSqS0__ 14 | __TFC16BWCollectionView16BWCollectionView16removeFromParentfT_T_ 15 | __TToFC16BWCollectionView16BWCollectionView16removeFromParentfT_T_ 16 | __TFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D09handlePanfT_T_ 17 | __TToFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D09handlePanfT_T_ 18 | __TToFC16BWCollectionView16BWCollectionView6updatefSdT_ 19 | __TFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D011updateIndexfT_T_ 20 | __TFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D04snapfT2toSi_T_ 21 | __TFC16BWCollectionView16BWCollectionViewD 22 | __TToFC16BWCollectionView16BWCollectionViewE 23 | __TFC16BWCollectionView16BWCollectionViewcfT_S0_ 24 | __TToFC16BWCollectionView16BWCollectionViewcfT_S0_ 25 | __TMaC16BWCollectionView16BWCollectionView 26 | _swift_rt_swift_getInitializedObjCClass 27 | __TFC16BWCollectionView20BWCollectionViewItemD 28 | __TFC16BWCollectionView20BWCollectionViewItemcfT_S0_ 29 | __TToFC16BWCollectionView20BWCollectionViewItemcfT_S0_ 30 | __TFC16BWCollectionView20BWCollectionViewItemCfT5coderCSo7NSCoder_GSqS0__ 31 | __TFC16BWCollectionView20BWCollectionViewItemcfT5coderCSo7NSCoder_GSqS0__ 32 | __TToFC16BWCollectionView20BWCollectionViewItemcfT5coderCSo7NSCoder_GSqS0__ 33 | __TMaC16BWCollectionView20BWCollectionViewItem 34 | _swift_rt_swift_slowAlloc 35 | _swift_rt_swift_slowDealloc 36 | _swift_rt_swift_getExistentialTypeMetadata 37 | __TMaCSo6SKNode 38 | ___swift_noop_void_return 39 | ___swift_memcpy8_4 40 | ___swift_noop_self_return 41 | ___swift_memcpy_array8_4 42 | ___swift_memmove_array8_4 43 | __TFs27_bridgeAnythingToObjectiveCurFxPs9AnyObject_ 44 | __TTSf1n_n_cl134_TFFFs25_unimplementedInitializerFT9classNameVs12StaticString8initNameS_4fileS_4lineSu6columnSu_Os5NeverU0_FGSRVs5UInt8_T_U_FGSRS1__T_GSRVs5UInt8____TTSfq1n_cl39_TTRXFo_dGSRVs5UInt8___XFo_dGSRS___iT__XFo_dGSRVs5UInt8____n___TTSgq5T____TFVs12StaticString14withUTF8BufferurfFGSRVs5UInt8_xx 45 | __TTSg5CSo6SKNode___TFVs12_ArrayBuffer19_getElementSlowPathfSiPs9AnyObject_ 46 | __TTSg5CSo6SKNode___TFVs15ContiguousArray16_copyToNewBufferfT8oldCountSi_T_ 47 | __TTSg5GVs22_ContiguousArrayBufferCSo6SKNode_GS_S0__s20_ArrayBufferProtocols___TFEsPs20_ArrayBufferProtocol31_forceCreateUniqueMutableBufferfT17countForNewBufferSi14minNewCapacitySi_GVs22_ContiguousArrayBufferwx7Element_ 48 | _swift_rt_swift_retain 49 | _swift_rt_swift_release 50 | _swift_rt_swift_deallocObject 51 | _swift_rt_swift_allocObject 52 | __TPA__TFFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D011updateIndexFT_T_U0_FTCSo6SKNodeS1__Sb 53 | __TPA__TTRXFo_oCSo6SKNodeoS__dSb_XFo_iS_iS__dSb_ 54 | __TTSg5GVs12_ArrayBufferCSo6SKNode_GS_S0__s10Collections___TFs32_copyCollectionToContiguousArrayuRxs10CollectionrFxGVs15ContiguousArrayWx8Iterator7Element__ 55 | __TTSg5GVs22_ContiguousArrayBufferCSo6SKNode_GS_S0__s20_ArrayBufferProtocols___TFEsPs20_ArrayBufferProtocol25_outlinedMakeUniqueBufferfT11bufferCountSi_T_ 56 | __TTSg5GVs22_ContiguousArrayBufferCSo6SKNode_GS_S0__s20_ArrayBufferProtocols___TFEsPs20_ArrayBufferProtocol31_forceCreateUniqueMutableBufferfT8newCountSi16requiredCapacitySi_GVs22_ContiguousArrayBufferwx7Element_ 57 | __TTSf4g_n___TFC16BWCollectionView16BWCollectionViewcfT2atCSo6SKView_S0_ 58 | __TTSf4d_n___TFC16BWCollectionView16BWCollectionViewcfT5coderCSo7NSCoder_GSqS0__ 59 | __TTSf4n_n_n_d_n___TTSg5GVs22_ContiguousArrayBufferCSo6SKNode_GS_S0__s20_ArrayBufferProtocols_GVs14_IgnorePointerS0__GS2_S0__s16_PointerFunctions___TFEsPs20_ArrayBufferProtocol22_arrayOutOfPlaceUpdateuRd__s16_PointerFunctionwd__7Elementzwx7ElementrfTRGVs22_ContiguousArrayBufferwxS2__SiSiqd___T_ 60 | __TTSf4n_n_d___TTSg5CSo6SKNode___TFVs22_ContiguousArrayBufferCfT19_uninitializedCountSi15minimumCapacitySi_GS_x_ 61 | __TTSf4g_n___TTSg5GVs15ContiguousArrayCSo6SKNode_GS_S0__s17MutableCollectionsGS_S0__s22RandomAccessCollections___TFesRxs17MutableCollectionxs22RandomAccessCollectionrS_4sortfT2byFTWxPs10Collection8Iterator7Element_WxS2_S3___Sb_T_ 62 | _swift_rt_swift_isUniquelyReferenced_nonNull_native 63 | __TTSf4d_n___TFC16BWCollectionView16BWCollectionView6updatefSdT_ 64 | __TTSf4g_g_g___TFFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D011updateIndexFT_T_U0_FTCSo6SKNodeS1__Sb 65 | __TTSfq4s_s___TFFFs25_unimplementedInitializerFT9classNameVs12StaticString8initNameS_4fileS_4lineSu6columnSu_Os5NeverU0_FGSRVs5UInt8_T_U_FGSRS1__T_ 66 | __TTSf4n_s_g___TTSg5GSrCSo6SKNode_GSrS__s23BidirectionalCollectionsGSrS__s17MutableCollections___TFs14_insertionSortuRxs23BidirectionalCollectionxs17MutableCollectionrFTRx8subRangeGVs5RangewxPs14_IndexableBase5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_T_ 67 | __TTSf4n_n_s_g___TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs9_siftDownuRxs17MutableCollectionxs22RandomAccessCollectionrFTRx5indexwxPs17_MutableIndexable5Index8subRangeGVs5RangewxS2__2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_T_ 68 | __TTSf4n_n_n_n_g___TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs6_sort3uRxs17MutableCollectionxs22RandomAccessCollectionrFTRxwxPs17_MutableIndexable5IndexwxS2_wxS2_2byFTWxPs10Collection8Iterator7Element_WxS4_S5___Sb_T_ 69 | __TTSf4n_s_g___TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs10_partitionuRxs17MutableCollectionxs22RandomAccessCollectionrFTRx8subRangeGVs5RangewxPs17_MutableIndexable5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_wxS3_ 70 | __TTSf4n_s_n_n___TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs14_introSortImpluRxs17MutableCollectionxs22RandomAccessCollectionrFTRx8subRangeGVs5RangewxPs17_MutableIndexable5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb10depthLimitSi_T_ 71 | __TTSf4n_n_g___TTSg5GVs15ContiguousArrayCSo6SKNode_GS_S0__s17MutableCollectionsGS_S0__s22RandomAccessCollections___TFFesRxs17MutableCollectionxs22RandomAccessCollectionrS_4sortFT2byFTWxPs10Collection8Iterator7Element_WxS2_S3___Sb_T_U_FTGSpWxS2_S3___Si_T_ 72 | __TMaGCs23_ContiguousArrayStorageP__ 73 | _swift_rt_swift_release_n 74 | _OBJC_METACLASS_$__TtC16BWCollectionView16BWCollectionView 75 | __TWvdvC16BWCollectionView16BWCollectionView5indexSi 76 | __TWvdvC16BWCollectionView16BWCollectionView7spacingV12CoreGraphics7CGFloat 77 | __TWvdvC16BWCollectionView16BWCollectionView12dampingRatioSd 78 | __TWvdvC16BWCollectionView16BWCollectionView10dataSourceGSqPS_26BWCollectionViewDataSource__ 79 | __TWvdvC16BWCollectionView16BWCollectionView8delegateGSqPS_24BWCollectionViewDelegate__ 80 | __TWvdvC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D013touchDistanceGSQSd_ 81 | __TWvdvC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D06skviewXwGSqCSo6SKView_ 82 | __TWvdvC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D020panGestureRecognizerGSQCSo22UIPanGestureRecognizer_ 83 | __TWvdvC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D011biggestItemGSQCSo6SKNode_ 84 | __TWvdvC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D019shouldBeginUpdatingSb 85 | __TWvdvC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D04dateGSQV10Foundation4Date_ 86 | __TWvdvC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D08velocityGSQSd_ 87 | __TWvdvC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D07dampingGSQSd_ 88 | __TWvdvC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D016previousVelocityGSQSd_ 89 | __TWvdvC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D013totalDistanceSd 90 | __TWvdvC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D06originGSQVSC7CGPoint_ 91 | __TMnC16BWCollectionView16BWCollectionView 92 | __TWoFC16BWCollectionView16BWCollectionViewg5indexSi 93 | __TWoFC16BWCollectionView16BWCollectionViews5indexSi 94 | __TWoFC16BWCollectionView16BWCollectionViewm5indexSi 95 | __TWoFC16BWCollectionView16BWCollectionViewg7spacingV12CoreGraphics7CGFloat 96 | __TWoFC16BWCollectionView16BWCollectionViews7spacingV12CoreGraphics7CGFloat 97 | __TWoFC16BWCollectionView16BWCollectionViewm7spacingV12CoreGraphics7CGFloat 98 | __TWoFC16BWCollectionView16BWCollectionViewg12dampingRatioSd 99 | __TWoFC16BWCollectionView16BWCollectionViews12dampingRatioSd 100 | __TWoFC16BWCollectionView16BWCollectionViewm12dampingRatioSd 101 | __TWoFC16BWCollectionView16BWCollectionViewg10dataSourceGSqPS_26BWCollectionViewDataSource__ 102 | __TWoFC16BWCollectionView16BWCollectionViews10dataSourceGSqPS_26BWCollectionViewDataSource__ 103 | __TWoFC16BWCollectionView16BWCollectionViewm10dataSourceGSqPS_26BWCollectionViewDataSource__ 104 | __TWoFC16BWCollectionView16BWCollectionViewg8delegateGSqPS_24BWCollectionViewDelegate__ 105 | __TWoFC16BWCollectionView16BWCollectionViews8delegateGSqPS_24BWCollectionViewDelegate__ 106 | __TWoFC16BWCollectionView16BWCollectionViewm8delegateGSqPS_24BWCollectionViewDelegate__ 107 | __TWoFC16BWCollectionView16BWCollectionViewCfT2atCSo6SKView_S0_ 108 | __TWoFC16BWCollectionView16BWCollectionViewCfT5coderCSo7NSCoder_GSqS0__ 109 | __TWoFC16BWCollectionView16BWCollectionView16removeFromParentfT_T_ 110 | __TWoFC16BWCollectionView16BWCollectionViewgP33_DB0AA490047F3829280D7E6C7D4467D013touchDistanceGSQSd_ 111 | __TWoFC16BWCollectionView16BWCollectionViewsP33_DB0AA490047F3829280D7E6C7D4467D013touchDistanceGSQSd_ 112 | __TWoFC16BWCollectionView16BWCollectionViewmP33_DB0AA490047F3829280D7E6C7D4467D013touchDistanceGSQSd_ 113 | __TWoFC16BWCollectionView16BWCollectionViewgP33_DB0AA490047F3829280D7E6C7D4467D06skviewXwGSqCSo6SKView_ 114 | __TWoFC16BWCollectionView16BWCollectionViewsP33_DB0AA490047F3829280D7E6C7D4467D06skviewXwGSqCSo6SKView_ 115 | __TWoFC16BWCollectionView16BWCollectionViewmP33_DB0AA490047F3829280D7E6C7D4467D06skviewXwGSqCSo6SKView_ 116 | __TWoFC16BWCollectionView16BWCollectionViewgP33_DB0AA490047F3829280D7E6C7D4467D020panGestureRecognizerGSQCSo22UIPanGestureRecognizer_ 117 | __TWoFC16BWCollectionView16BWCollectionViewsP33_DB0AA490047F3829280D7E6C7D4467D020panGestureRecognizerGSQCSo22UIPanGestureRecognizer_ 118 | __TWoFC16BWCollectionView16BWCollectionViewmP33_DB0AA490047F3829280D7E6C7D4467D020panGestureRecognizerGSQCSo22UIPanGestureRecognizer_ 119 | __TWoFC16BWCollectionView16BWCollectionViewgP33_DB0AA490047F3829280D7E6C7D4467D011biggestItemGSQCSo6SKNode_ 120 | __TWoFC16BWCollectionView16BWCollectionViewsP33_DB0AA490047F3829280D7E6C7D4467D011biggestItemGSQCSo6SKNode_ 121 | __TWoFC16BWCollectionView16BWCollectionViewmP33_DB0AA490047F3829280D7E6C7D4467D011biggestItemGSQCSo6SKNode_ 122 | __TWoFC16BWCollectionView16BWCollectionViewgP33_DB0AA490047F3829280D7E6C7D4467D019shouldBeginUpdatingSb 123 | __TWoFC16BWCollectionView16BWCollectionViewsP33_DB0AA490047F3829280D7E6C7D4467D019shouldBeginUpdatingSb 124 | __TWoFC16BWCollectionView16BWCollectionViewmP33_DB0AA490047F3829280D7E6C7D4467D019shouldBeginUpdatingSb 125 | __TWoFC16BWCollectionView16BWCollectionViewgP33_DB0AA490047F3829280D7E6C7D4467D04dateGSQV10Foundation4Date_ 126 | __TWoFC16BWCollectionView16BWCollectionViewsP33_DB0AA490047F3829280D7E6C7D4467D04dateGSQV10Foundation4Date_ 127 | __TWoFC16BWCollectionView16BWCollectionViewmP33_DB0AA490047F3829280D7E6C7D4467D04dateGSQV10Foundation4Date_ 128 | __TWoFC16BWCollectionView16BWCollectionViewgP33_DB0AA490047F3829280D7E6C7D4467D08velocityGSQSd_ 129 | __TWoFC16BWCollectionView16BWCollectionViewsP33_DB0AA490047F3829280D7E6C7D4467D08velocityGSQSd_ 130 | __TWoFC16BWCollectionView16BWCollectionViewmP33_DB0AA490047F3829280D7E6C7D4467D08velocityGSQSd_ 131 | __TWoFC16BWCollectionView16BWCollectionViewgP33_DB0AA490047F3829280D7E6C7D4467D07dampingGSQSd_ 132 | __TWoFC16BWCollectionView16BWCollectionViewsP33_DB0AA490047F3829280D7E6C7D4467D07dampingGSQSd_ 133 | __TWoFC16BWCollectionView16BWCollectionViewmP33_DB0AA490047F3829280D7E6C7D4467D07dampingGSQSd_ 134 | __TWoFC16BWCollectionView16BWCollectionViewgP33_DB0AA490047F3829280D7E6C7D4467D016previousVelocityGSQSd_ 135 | __TWoFC16BWCollectionView16BWCollectionViewsP33_DB0AA490047F3829280D7E6C7D4467D016previousVelocityGSQSd_ 136 | __TWoFC16BWCollectionView16BWCollectionViewmP33_DB0AA490047F3829280D7E6C7D4467D016previousVelocityGSQSd_ 137 | __TWoFC16BWCollectionView16BWCollectionViewgP33_DB0AA490047F3829280D7E6C7D4467D013totalDistanceSd 138 | __TWoFC16BWCollectionView16BWCollectionViewsP33_DB0AA490047F3829280D7E6C7D4467D013totalDistanceSd 139 | __TWoFC16BWCollectionView16BWCollectionViewmP33_DB0AA490047F3829280D7E6C7D4467D013totalDistanceSd 140 | __TWoFC16BWCollectionView16BWCollectionViewgP33_DB0AA490047F3829280D7E6C7D4467D06originGSQVSC7CGPoint_ 141 | __TWoFC16BWCollectionView16BWCollectionViewsP33_DB0AA490047F3829280D7E6C7D4467D06originGSQVSC7CGPoint_ 142 | __TWoFC16BWCollectionView16BWCollectionViewmP33_DB0AA490047F3829280D7E6C7D4467D06originGSQVSC7CGPoint_ 143 | __TWoFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D010reloadDatafT_T_ 144 | __TWoFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D010setSpacingfT_T_ 145 | __TWoFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D09handlePanfT_T_ 146 | __TWoFC16BWCollectionView16BWCollectionView6updatefSdT_ 147 | __TWoFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D011updateIndexfT_T_ 148 | __TWoFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D04snapfT2toSi_T_ 149 | __TMLC16BWCollectionView16BWCollectionView 150 | __TMfC16BWCollectionView16BWCollectionView 151 | __TMRfC16BWCollectionView16BWCollectionView 152 | __TMRsC16BWCollectionView16BWCollectionView 153 | _OBJC_METACLASS_$__TtC16BWCollectionView20BWCollectionViewItem 154 | __TWvdvC16BWCollectionView20BWCollectionViewItemP33_DB0AA490047F3829280D7E6C7D4467D05indexGSQSi_ 155 | __TMnC16BWCollectionView20BWCollectionViewItem 156 | __TWoFC16BWCollectionView20BWCollectionViewItemgP33_DB0AA490047F3829280D7E6C7D4467D05indexGSQSi_ 157 | __TWoFC16BWCollectionView20BWCollectionViewItemsP33_DB0AA490047F3829280D7E6C7D4467D05indexGSQSi_ 158 | __TWoFC16BWCollectionView20BWCollectionViewItemmP33_DB0AA490047F3829280D7E6C7D4467D05indexGSQSi_ 159 | __TWoFC16BWCollectionView20BWCollectionViewItemCfT_S0_ 160 | __TWoFC16BWCollectionView20BWCollectionViewItemCfT5coderCSo7NSCoder_GSqS0__ 161 | __TMLC16BWCollectionView20BWCollectionViewItem 162 | __TMfC16BWCollectionView20BWCollectionViewItem 163 | __TMRfC16BWCollectionView20BWCollectionViewItem 164 | __TMRsC16BWCollectionView20BWCollectionViewItem 165 | __TMRfP16BWCollectionView26BWCollectionViewDataSource_ 166 | __TMp16BWCollectionView26BWCollectionViewDataSource 167 | __TMRfP16BWCollectionView24BWCollectionViewDelegate_ 168 | __TMp16BWCollectionView24BWCollectionViewDelegate 169 | __swift_FORCE_LOAD_$_swiftUIKit_$_BWCollectionView 170 | __swift_FORCE_LOAD_$_swiftCoreImage_$_BWCollectionView 171 | __swift_FORCE_LOAD_$_swiftDarwin_$_BWCollectionView 172 | __swift_FORCE_LOAD_$_swiftCoreGraphics_$_BWCollectionView 173 | __swift_FORCE_LOAD_$_swiftDispatch_$_BWCollectionView 174 | __swift_FORCE_LOAD_$_swiftObjectiveC_$_BWCollectionView 175 | __swift_FORCE_LOAD_$_swiftFoundation_$_BWCollectionView 176 | __swift_FORCE_LOAD_$_swiftQuartzCore_$_BWCollectionView 177 | __swift_FORCE_LOAD_$_swiftSpriteKit_$_BWCollectionView 178 | __swift_FORCE_LOAD_$_swiftGLKit_$_BWCollectionView 179 | __swift_FORCE_LOAD_$_swiftsimd_$_BWCollectionView 180 | ___swift_reflection_version 181 | __TMRfCSo6SKView 182 | __TMRsCSo6SKView 183 | __TMRfCSo22UIPanGestureRecognizer 184 | __TMRsCSo22UIPanGestureRecognizer 185 | __TMRfCSo6SKNode 186 | __TMRsCSo6SKNode 187 | __TMRbVSC7CGPoint 188 | __TMLGSQSi_ 189 | __TMLGSqP16BWCollectionView26BWCollectionViewDataSource__ 190 | __TMLP16BWCollectionView26BWCollectionViewDataSource_ 191 | __TMLGSqP16BWCollectionView24BWCollectionViewDelegate__ 192 | __TMLP16BWCollectionView24BWCollectionViewDelegate_ 193 | __TMLGSQSd_ 194 | __TMLGSqCSo6SKView_ 195 | __TMLCSo6SKView 196 | __TMLGSQCSo22UIPanGestureRecognizer_ 197 | __TMLCSo22UIPanGestureRecognizer 198 | __TMLGSQCSo6SKNode_ 199 | __TMLCSo6SKNode 200 | __TMLGSQV10Foundation4Date_ 201 | __TMLGSQVSC7CGPoint_ 202 | __TMLVSC7CGPoint 203 | __TWVVSC7CGPoint 204 | __TMnVSC7CGPoint 205 | __TMVSC7CGPoint 206 | l_OBJC_LABEL_PROTOCOL_$__TtPs9AnyObject_ 207 | l_OBJC_PROTOCOL_REFERENCE_$__TtPs9AnyObject_ 208 | __TMLGCs23_ContiguousArrayStorageCSo6SKNode_ 209 | __TMLGSrCSo6SKNode_ 210 | __TMLGCs23_ContiguousArrayStorageP__ 211 | __TMLP_ 212 | _objc_classes 213 | __TMC16BWCollectionView16BWCollectionView 214 | __TMC16BWCollectionView20BWCollectionViewItem 215 | Apple LLVM version 8.1.0 (clang-802.0.42) 216 | -emit-bc "/Users/BWide/Dropbox (BEPiD)/Xcode/BWCollectionViewExample/BWCollectionViewExample/BWCollectionView.swift" -target armv7-apple-ios10.3 -enable-objc-interop -sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk -I /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Products/Release-iphoneos -F /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Products/Release-iphoneos -g -import-underlying-module -module-cache-path /Users/BWide/Library/Developer/Xcode/DerivedData/ModuleCache -serialize-debugging-options -Xcc -I/Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/BWCollectionView-generated-files.hmap -Xcc -I/Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/BWCollectionView-own-target-headers.hmap -Xcc -I/Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/BWCollectionView-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/BWCollectionView-project-headers.hmap -Xcc -I/Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Products/Release-iphoneos/include -Xcc -I/Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/DerivedSources/armv7 -Xcc -I/Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/DerivedSources -Xcc -ivfsoverlay -Xcc /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/unextended-module-overlay.yaml -Xcc "-working-directory/Users/BWide/Dropbox (BEPiD)/Xcode/BWCollectionViewExample" -emit-module-doc-path /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/Objects-normal/armv7/BWCollectionView.swiftdoc -serialize-diagnostics-path /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/Objects-normal/armv7/BWCollectionView.dia -O -parse-as-library -module-name BWCollectionView -emit-module-path /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/Objects-normal/armv7/BWCollectionView.swiftmodule -emit-objc-header-path /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/Objects-normal/armv7/BWCollectionView-Swift.h -emit-dependencies-path /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/Objects-normal/armv7/BWCollectionView.d -num-threads 4 -o /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/Objects-normal/armv7/BWCollectionView.bc -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift 217 | 218 | /Users/BWide/Dropbox (BEPiD)/Xcode/BWCollectionViewExample 219 | Apple Swift version 3.1 (swiftlang-802.0.53 clang-802.0.42) 220 | /Users/BWide/Dropbox (BEPiD)/Xcode/BWCollectionViewExample/BWCollectionViewExample/BWCollectionView.swift 221 | _TMaGCs23_ContiguousArrayStorageP__ 222 | BWCollectionView.swift 223 | /Users/BWide/Dropbox (BEPiD)/Xcode/BWCollectionViewExample/BWCollectionViewExample 224 | _TMaP_ 225 | _TTSf4n_n_g___TTSg5GVs15ContiguousArrayCSo6SKNode_GS_S0__s17MutableCollectionsGS_S0__s22RandomAccessCollections___TFFesRxs17MutableCollectionxs22RandomAccessCollectionrS_4sortFT2byFTWxPs10Collection8Iterator7Element_WxS2_S3___Sb_T_U_FTGSpWxS2_S3___Si_T_ 226 | _TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFesRxs17MutableCollectionxs22RandomAccessCollectionrS_4sortfT2byFTWxPs10Collection8Iterator7Element_WxS2_S3___Sb_T_ 227 | _TTSg5CSo6SKNode___TTWurGSrx_s17_MutableIndexablesFS_g8endIndexwx5Index 228 | _TTSg5CSo6SKNode___TFSrg8endIndexSi 229 | _TTSg5CSo6SKNode___TFSrg5countSi 230 | _TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs10_introSortuRxs17MutableCollectionxs22RandomAccessCollectionrFTRx8subRangeGVs5RangewxPs17_MutableIndexable5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_T_ 231 | _TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs14_introSortImpluRxs17MutableCollectionxs22RandomAccessCollectionrFTRx8subRangeGVs5RangewxPs17_MutableIndexable5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb10depthLimitSi_T_ 232 | _TTWSis13SignedIntegersFS_8toIntMaxfT_Vs5Int64 233 | _TTSg5CSo6SKNode___TFSrCfT5startGSqGSpx__5countSi_GSrx_ 234 | _TTSg5GSpCSo6SKNode__GSpS_____TFSq3mapurfzFzxqd__GSqqd___ 235 | _TTSr5CSo6SKNode___TTRGrXFo_dGSpx__dGSpx_zoPs5Error__XFo_iGSpx__iGSpx_zoPS___ 236 | _TTSg5CSo6SKNode___TTRGrXFo_dGSpx__dGSpx_zoPs5Error__XFo_iGSpx__iGSpx_zoPS___ 237 | _TTSg5CSo6SKNode___TFFSrcFT5startGSqGSpx__5countSi_GSrx_U_FGSpx_GSpx_ 238 | _TTSf4n_s_n_n___TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs14_introSortImpluRxs17MutableCollectionxs22RandomAccessCollectionrFTRx8subRangeGVs5RangewxPs17_MutableIndexable5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb10depthLimitSi_T_ 239 | _TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs9_heapSortuRxs17MutableCollectionxs22RandomAccessCollectionrFTRx8subRangeGVs5RangewxPs17_MutableIndexable5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_T_ 240 | _TTSf4n_s_g___TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs9_heapSortuRxs17MutableCollectionxs22RandomAccessCollectionrFTRx8subRangeGVs5RangewxPs17_MutableIndexable5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_T_ 241 | _TTSg5CSo6SKNode___TTWurGSrx_s17MutableCollectionsFS_m9subscriptFwx5IndexWx8Iterator7Element_ 242 | _TTSg5CSo6SKNode___TFSrm9subscriptFSix 243 | _TTSg5CSo6SKNode___TFSrg9subscriptFSix 244 | _TTSg5CSo6SKNode___TTWurGSrx_s23BidirectionalCollectionsFS_9formIndexfT6beforeRwx5Index_T_ 245 | _TTSg5CSo6SKNode___TFSr9formIndexfT6beforeRSi_T_ 246 | _TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs8_heapifyuRxs17MutableCollectionxs22RandomAccessCollectionrFTRx8subRangeGVs5RangewxPs17_MutableIndexable5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_T_ 247 | _TTSg5CSo6SKNode___TTWurGSrx_s10CollectionsFS_5indexfTwx5Index8offsetBywx13IndexDistance_wxS0_ 248 | _TTSg5CSo6SKNode___TFSr5indexfTSi8offsetBySi_Si 249 | _TTSg5CSo6SKNode___TTWurGSrx_s10CollectionsFS_8distancefT4fromwx5Index2towxS0__wx13IndexDistance 250 | _TTSg5CSo6SKNode___TFSr8distancefT4fromSi2toSi_Si 251 | _TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs10_partitionuRxs17MutableCollectionxs22RandomAccessCollectionrFTRx8subRangeGVs5RangewxPs17_MutableIndexable5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_wxS3_ 252 | _TTSg5SiSis9Equatables___TFsoi2neuRxs9EquatablerFTxx_Sb 253 | _TTWSis9EquatablesZFS_oi2eefTxx_Sb 254 | _TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs9_siftDownuRxs17MutableCollectionxs22RandomAccessCollectionrFTRx5indexwxPs17_MutableIndexable5Index8subRangeGVs5RangewxS2__2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_T_ 255 | _TFFSrm9subscriptFSixU_T_ 256 | _TFSrs9subscriptFSix 257 | _TMaGSrCSo6SKNode_ 258 | _TTSg5CSo6SKNode___TFs4swapurFTRxRx_T_ 259 | _TTSg5GSrCSo6SKNode_GSrS__s23BidirectionalCollectionsGSrS__s17MutableCollections___TFs14_insertionSortuRxs23BidirectionalCollectionxs17MutableCollectionrFTRx8subRangeGVs5RangewxPs14_IndexableBase5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_T_ 260 | _TTWSis10ComparablesZFS_oi1lfTxx_Sb 261 | _TTSf4n_s_g___TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs10_partitionuRxs17MutableCollectionxs22RandomAccessCollectionrFTRx8subRangeGVs5RangewxPs17_MutableIndexable5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_wxS3_ 262 | _TTSg5CSo6SKNode___TTWurGSrx_s17MutableCollectionsFS_g9subscriptFwx5IndexWx8Iterator7Element_ 263 | _TTSg5CSo6SKNode___TTWurGSrx_s17_MutableIndexablesFS_9formIndexfT5afterRwx5Index_T_ 264 | _TTSg5CSo6SKNode___TFSr9formIndexfT5afterRSi_T_ 265 | _TTSg5SiSis14_SignedIntegers_SuSus15UnsignedIntegers___TFs11numericCastu0_Rxs14_SignedInteger_s15UnsignedIntegerrFxq_ 266 | _TTWSus15UnsignedIntegersFS_CfVs6UInt64x 267 | _TTSg5CSo6SKNode___TTWurGSrx_s23BidirectionalCollectionsFS_5indexfT6beforewx5Index_wxS0_ 268 | _TTSg5CSo6SKNode___TFSr5indexfT6beforeSi_Si 269 | _TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs6_sort3uRxs17MutableCollectionxs22RandomAccessCollectionrFTRxwxPs17_MutableIndexable5IndexwxS2_wxS2_2byFTWxPs10Collection8Iterator7Element_WxS4_S5___Sb_T_ 270 | _TTWSis14_SignedIntegersFS_8toIntMaxfT_Vs5Int64 271 | _TTSf4n_n_n_n_g___TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs6_sort3uRxs17MutableCollectionxs22RandomAccessCollectionrFTRxwxPs17_MutableIndexable5IndexwxS2_wxS2_2byFTWxPs10Collection8Iterator7Element_WxS4_S5___Sb_T_ 272 | _TTSf4n_n_s_g___TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs9_siftDownuRxs17MutableCollectionxs22RandomAccessCollectionrFTRx5indexwxPs17_MutableIndexable5Index8subRangeGVs5RangewxS2__2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_T_ 273 | _TTSg5CSo6SKNode___TTWurGSrx_s17_MutableIndexablesFS_5indexfT5afterwx5Index_wxS0_ 274 | _TTSg5CSo6SKNode___TFSr5indexfT5afterSi_Si 275 | _TTWSis17IntegerArithmeticsZFS_oi1pfTxx_x 276 | _TTWSis10ComparablesZFS_oi2gefTxx_Sb 277 | _TTSf4n_s_g___TTSg5GSrCSo6SKNode_GSrS__s23BidirectionalCollectionsGSrS__s17MutableCollections___TFs14_insertionSortuRxs23BidirectionalCollectionxs17MutableCollectionrFTRx8subRangeGVs5RangewxPs14_IndexableBase5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_T_ 278 | _TTSg5CSo6SKNode___TTWurGSrx_s17MutableCollectionsFS_s9subscriptFwx5IndexWx8Iterator7Element_ 279 | _TTSg5CSo6SKNode___TFSrs9subscriptFSix 280 | _TTSg5SiSis10Comparables___TFVs5Rangeg7isEmptySb 281 | _TTSfq4s_s___TFFFs25_unimplementedInitializerFT9classNameVs12StaticString8initNameS_4fileS_4lineSu6columnSu_Os5NeverU0_FGSRVs5UInt8_T_U_FGSRS1__T_ 282 | _TTSf4g_g_g___TFFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D011updateIndexFT_T_U0_FTCSo6SKNodeS1__Sb 283 | distance 284 | origin.get 285 | update 286 | _TTSg5GSaCSo6SKNode_GSaS__s8Sequences___TFEsPs8Sequence7forEachfzFzWx8Iterator7Element_T_T_ 287 | _TTSg5GSaCSo6SKNode_GSaS__s14_IndexableBases___TTWuRxs14_IndexableBaserGVs16IndexingIteratorx_s16IteratorProtocolsFS1_4nextfT_GSqwx7Element_ 288 | _TTSg5GSaCSo6SKNode_GSaS__s14_IndexableBases___TFVs16IndexingIterator4nextfT_GSqwx8_Element_ 289 | _TTSg5CSo6SKNode___TTWurGSax_s14_IndexableBasesFS_g9subscriptFwx5Indexwx8_Element 290 | _TTSg5CSo6SKNode___TFSag9subscriptFSix 291 | _TTSg5CSo6SKNode___TFSa15_checkSubscriptfTSi20wasNativeTypeCheckedSb_Vs16_DependenceToken 292 | _TTSg5CSo6SKNode___TFVs12_ArrayBuffer37_checkInoutAndNativeTypeCheckedBoundsfTSi20wasNativeTypeCheckedSb_T_ 293 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBuffer20_checkValidSubscriptfSiT_ 294 | _TTSg5CSo6SKNode___TTWurGSax_s14_IndexableBasesFS_9formIndexfT5afterRwx5Index_T_ 295 | _TTSg5CSo6SKNode___TFSa9formIndexfT5afterRSi_T_ 296 | previousVelocity.set 297 | index.get 298 | shouldBeginUpdating.set 299 | previousVelocity.get 300 | velocity.get 301 | totalDistance.materialize 302 | date.set 303 | damping.set 304 | dampingRatio.get 305 | damping.get 306 | velocity.set 307 | _TTSg5CSo6SKNode___TFSa11_getElementfTSi20wasNativeTypeCheckedSb22matchingSubscriptCheckVs16_DependenceToken_x 308 | _TTSg5CSo6SKNode___TFVs12_ArrayBuffer10getElementfTSi20wasNativeTypeCheckedSb_x 309 | _TTRXFo_oCSo6SKNode_zoPs5Error__XFo_iS__zoPS0___ 310 | _TFFC16BWCollectionView16BWCollectionView6updateFSdT_U_FCSo6SKNodeT_ 311 | _TTSf4g_g___TFFC16BWCollectionView16BWCollectionView6updateFSdT_U_FCSo6SKNodeT_ 312 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBufferg9subscriptFSix 313 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBuffer10getElementfSix 314 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBufferg5countSi 315 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBufferg19firstElementAddressGSpx_ 316 | _TTSg5CSo6SKNode___TFVs12_ArrayBufferg7_nativeGVs22_ContiguousArrayBufferx_ 317 | _TTSg5CSo6SKNode___TFSa29_hoistableIsNativeTypeCheckedfT_Sb 318 | _TTSg5CSo6SKNode___TFVs12_ArrayBufferg32arrayPropertyIsNativeTypeCheckedSb 319 | _TTSg5CSo6SKNode___TFVs12_ArrayBufferg20_isNativeTypeCheckedSb 320 | _TTSg5CSo6SKNode___TTWurGSax_s14_IndexableBasesFS_g8endIndexwx5Index 321 | _TTSg5CSo6SKNode___TFSag8endIndexSi 322 | _TTSg5CSo6SKNode___TFSa9_getCountfT_Si 323 | _TTSg5CSo6SKNode___TFVs12_ArrayBufferg5countSi 324 | _TTSg5CSo6SKNode___TFVs12_ArrayBufferg10_nonNativePs12_NSArrayCore_ 325 | _TTSg5CSo6SKNode___TFVs12_ArrayBufferg9_isNativeSb 326 | date.get 327 | shouldBeginUpdating.get 328 | _TTSf4g_n___TTSg5GVs15ContiguousArrayCSo6SKNode_GS_S0__s17MutableCollectionsGS_S0__s22RandomAccessCollections___TFesRxs17MutableCollectionxs22RandomAccessCollectionrS_4sortfT2byFTWxPs10Collection8Iterator7Element_WxS2_S3___Sb_T_ 329 | _TTSg5CSo6SKNode_T____TTWurGVs15ContiguousArrayx_s17MutableCollectionsFS0_42_withUnsafeMutableBufferPointerIfSupportedurfzFzTGSpWx8Iterator7Element__Si_qd__GSqqd___ 330 | _TTSg5CSo6SKNode_T____TFVs15ContiguousArray42_withUnsafeMutableBufferPointerIfSupportedurfzFzTGSpx_Si_qd__GSqqd___ 331 | _TTSg5CSo6SKNode_T____TFVs15ContiguousArray30withUnsafeMutableBufferPointerurfzFzRGSrx_qd__qd__ 332 | _TTSg5CSo6SKNode_T____TFFVs15ContiguousArray30withUnsafeMutableBufferPointerurFzFzRGSrx_qd__qd__L_6$deferu__rfT_T_ 333 | _TTSg5GVs15ContiguousArrayCSo6SKNode____TFs4swapurFTRxRx_T_ 334 | _TTSf1n_n_cl246_TTSg5GVs15ContiguousArrayCSo6SKNode_GS_S0__s17MutableCollectionsGS_S0__s22RandomAccessCollections___TTRGRxs17MutableCollectionxs22RandomAccessCollectionrXFo_dGSpWxPs10Collection8Iterator7Element__dSi_zoPs5Error__XFo_dGSpWxS2_S3___dSi_iT_zoPS4___XFo_dGSpCSo6SKNode_dSi_zoPs5Error_____TTSg5CSo6SKNode_T____TFFVs15ContiguousArray42_withUnsafeMutableBufferPointerIfSupportedurFzFzTGSpx_Si_qd__GSqqd___U_FzRGSrx_qd__ 335 | _TTSg5GVs15ContiguousArrayCSo6SKNode_GS_S0__s17MutableCollectionsGS_S0__s22RandomAccessCollections___TTRGRxs17MutableCollectionxs22RandomAccessCollectionrXFo_dGSpWxPs10Collection8Iterator7Element__dSi_zoPs5Error__XFo_dGSpWxS2_S3___dSi_iT_zoPS4___ 336 | _TTSg5GVs15ContiguousArrayCSo6SKNode_GS_S0__s17MutableCollectionsGS_S0__s22RandomAccessCollections___TFFesRxs17MutableCollectionxs22RandomAccessCollectionrS_4sortFT2byFTWxPs10Collection8Iterator7Element_WxS2_S3___Sb_T_U_FTGSpWxS2_S3___Si_T_ 337 | _TTSf4s___TTSg5CSo6SKNode___TFSrg5countSi 338 | _TTSg5CSo6SKNode___TFVs15ContiguousArrayg5countSi 339 | _TTSg5CSo6SKNode___TFVs15ContiguousArray9_getCountfT_Si 340 | _TTSf4n_n_d___TTSg5CSo6SKNode___TFVs22_ContiguousArrayBufferCfT19_uninitializedCountSi15minimumCapacitySi_GS_x_ 341 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBuffer18_initStorageHeaderfT5countSi8capacitySi_T_ 342 | _TMaGCs23_ContiguousArrayStorageCSo6SKNode_ 343 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBufferCfT_GS_x_ 344 | _TTSf4n_n_n_d_n___TTSg5GVs22_ContiguousArrayBufferCSo6SKNode_GS_S0__s20_ArrayBufferProtocols_GVs14_IgnorePointerS0__GS2_S0__s16_PointerFunctions___TFEsPs20_ArrayBufferProtocol22_arrayOutOfPlaceUpdateuRd__s16_PointerFunctionwd__7Elementzwx7ElementrfTRGVs22_ContiguousArrayBufferwxS2__SiSiqd___T_ 345 | _TTSg5CSo6SKNode___TTWurGVs22_ContiguousArrayBufferx_s20_ArrayBufferProtocolsFS0_13_copyContentsfT8subRangeGVs5RangeSi_12initializingGSpwx7Element__GSpwxS2__ 346 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBuffer13_copyContentsfT8subRangeGVs5RangeSi_12initializingGSpx__GSpx_ 347 | _TTSg5CSo6SKNode___TFSp10initializefT4fromGSPx_5countSi_T_ 348 | _TTSg5CSo6SKNode___TTWurGVs22_ContiguousArrayBufferx_s20_ArrayBufferProtocolsFS0_g8endIndexSi 349 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBufferg8endIndexSi 350 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBuffers5countSi 351 | _TTSg5CSo6SKNode___TFSp12deinitializefT5countSi_Sv 352 | _TTSg5CSo6SKNode___TFSp14moveInitializefT4fromGSpx_5countSi_T_ 353 | _TTSg5CSo6SKNode___TTWurGVs22_ContiguousArrayBufferx_s20_ArrayBufferProtocolsFS0_g19firstElementAddressGSpwx7Element_ 354 | _TTSg5CSo6SKNode___TTWurGVs22_ContiguousArrayBufferx_s20_ArrayBufferProtocolsFS0_33requestUniqueMutableBackingBufferfT15minimumCapacitySi_GSqGS_wx7Element__ 355 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBuffer33requestUniqueMutableBackingBufferfT15minimumCapacitySi_GSqGS_x__ 356 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBufferg8capacitySi 357 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBuffer20isUniquelyReferencedfT_Sb 358 | _TTSg5CSo6SKNode___TTWurGVs22_ContiguousArrayBufferx_s20_ArrayBufferProtocolsFS0_g5countSi 359 | init 360 | _TTSg5GVs22_ContiguousArrayBufferCSo6SKNode_GS_S0__s20_ArrayBufferProtocols___TFEsPs20_ArrayBufferProtocol31_forceCreateUniqueMutableBufferfT8newCountSi16requiredCapacitySi_GVs22_ContiguousArrayBufferwx7Element_ 361 | _TTSg5GVs22_ContiguousArrayBufferCSo6SKNode_GS_S0__s20_ArrayBufferProtocols___TFEsPs20_ArrayBufferProtocol35_forceCreateUniqueMutableBufferImplfT14countForBufferSi14minNewCapacitySi16requiredCapacitySi_GVs22_ContiguousArrayBufferwx7Element_ 362 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBufferCfT19_uninitializedCountSi15minimumCapacitySi_GS_x_ 363 | _TTSg5CSo6SKNode___TTWurGVs22_ContiguousArrayBufferx_s20_ArrayBufferProtocolsFS0_g8capacitySi 364 | _TTSg5GVs22_ContiguousArrayBufferCSo6SKNode_GS_S0__s20_ArrayBufferProtocols___TFEsPs20_ArrayBufferProtocol25_outlinedMakeUniqueBufferfT11bufferCountSi_T_ 365 | _TTSg5GVs22_ContiguousArrayBufferCSo6SKNode_GS_S0__s20_ArrayBufferProtocols_GVs14_IgnorePointerS0__GS2_S0__s16_PointerFunctions___TFEsPs20_ArrayBufferProtocol22_arrayOutOfPlaceUpdateuRd__s16_PointerFunctionwd__7Elementzwx7ElementrfTRGVs22_ContiguousArrayBufferwxS2__SiSiqd___T_ 366 | _TTSg5GVs12_ArrayBufferCSo6SKNode_GS_S0__s10Collections___TFs32_copyCollectionToContiguousArrayuRxs10CollectionrFxGVs15ContiguousArrayWx8Iterator7Element__ 367 | _TTSg5CSo6SKNode___TTWurGVs12_ArrayBufferx_s14_IndexableBasesFS0_9formIndexfT5afterRwx5Index_T_ 368 | _TTSg5GVs12_ArrayBufferCSo6SKNode_GS_S0__s10_Indexables___TFEsPs10_Indexable9formIndexfT5afterRwx5Index_T_ 369 | _TTSg5CSo6SKNode___TTWurGVs12_ArrayBufferx_s14_IndexableBasesFS0_5indexfT5afterwx5Index_wxS1_ 370 | _TTSg5GVs12_ArrayBufferCSo6SKNode_GS_S0__s22RandomAccessCollections___TFesRxs22RandomAccessCollectionwx5Indexs10Strideablewx7IndiceszGVs14CountableRangewxS0__WxS0_6Stride_zwx13IndexDistanceWxS2_S0__zwxS0_WxS2_S5__zwxS5_WxS2_7Indices_zGS3_wxS0__WxS2_8Iterator_zGVs16IndexingIteratorGS3_wxS0___WxS2_11SubSequence_zGS3_wxS0__WxS2_8_Element_zwxS0_WxS2_S6_S0__zwxS0_WxS2_S6_S5__zwxS5_WxS2_S6_S6__zGS3_wxS0__WxS2_S6_S7__zGS8_GS3_wxS0___WxS2_S6_S9__zGS3_wxS0__WxS2_S6_S10__zwxS0_WxS2_S7_7Element_zwxS0_WxS2_S9_S0__zwxS0_WxS2_S9_13IndexDistance_zwxS5_WxS2_S9_S6__zGS3_wxS0__WxS2_S9_S7__zGS8_GS3_wxS0___WxS2_S9_S9__zGS3_wxS0__WxS2_S9_S10__zwxS0_WxS2_S6_S6_S0__zwxS0_WxS2_S6_S6_S5__zwxS5_WxS2_S6_S6_S7__zGS8_GS3_wxS0___WxS2_S6_S6_S9__zGS3_wxS0__WxS2_S6_S6_S10__zwxS0_WxS2_S6_S7_S11__zwxS0_WxS2_S6_S9_S0__zwxS0_WxS2_S6_S9_S7__zGS8_GS3_wxS0___WxS2_S6_S9_S9__zGS3_wxS0__WxS2_S6_S9_S10__zwxS0_WxS2_S9_S6_S0__zwxS0_WxS2_S9_S6_S5__zwxS5_WxS2_S9_S6_S7__zGS8_GS3_wxS0___WxS2_S9_S6_S9__zGS3_wxS0__WxS2_S9_S6_S10__zwxS0_WxS2_S9_S7_S11__zwxS0_WxS2_S9_S9_S0__zwxS0_WxS2_S9_S9_S7__zGS8_GS3_wxS0___WxS2_S9_S9_S9__zGS3_wxS0__WxS2_S9_S9_S10__zwxS0_WxS2_S6_S6_S7_S11__zwxS0_WxS2_S6_S9_S7_S11__zwxS0_WxS2_S9_S6_S7_S11__zwxS0_WxS2_S9_S9_S7_S11__zwxS0_rS_5indexfT5afterwxS0__wxS0_ 371 | _TTSg5CSo6SKNode___TTWurGVs12_ArrayBufferx_s14_IndexableBasesFS0_20_failEarlyRangeCheckfTwx5Index6boundsGVs5RangewxS1___T_ 372 | _TTSg5GVs12_ArrayBufferCSo6SKNode_GS_S0__s10_Indexables___TFEsPs10_Indexable20_failEarlyRangeCheckfTwx5Index6boundsGVs5RangewxS0___T_ 373 | _TTSg5CSo6SKNode___TTWurGVs12_ArrayBufferx_s14_IndexableBasesFS0_g8endIndexwx5Index 374 | _TTSg5CSo6SKNode___TFVs12_ArrayBufferg8endIndexSi 375 | _TTSg5CSo6SKNode___TFSp10initializefT2tox5countSi_T_ 376 | _TTSg5CSo6SKNode___TTWurGVs12_ArrayBufferx_s10CollectionsFS0_g9subscriptFwx5IndexWx8Iterator7Element_ 377 | _TTSg5CSo6SKNode___TFVs12_ArrayBufferg9subscriptFSix 378 | _TTSg5CSo6SKNode___TFVs15ContiguousArrayCfT_GS_x_ 379 | _TTSg5CSo6SKNode___TTWurGVs12_ArrayBufferx_s10CollectionsFS0_g5countwx13IndexDistance 380 | _TPA__TTRXFo_oCSo6SKNodeoS__dSb_XFo_iS_iS__dSb_ 381 | _TTRXFo_oCSo6SKNodeoS__dSb_XFo_iS_iS__dSb_ 382 | objectdestroy.2 383 | _TPA__TFFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D011updateIndexFT_T_U0_FTCSo6SKNodeS1__Sb 384 | _TFFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D011updateIndexFT_T_U0_FTCSo6SKNodeS1__Sb 385 | objectdestroy 386 | _TTSg5GVs22_ContiguousArrayBufferCSo6SKNode_GS_S0__s20_ArrayBufferProtocols___TFEsPs20_ArrayBufferProtocol31_forceCreateUniqueMutableBufferfT17countForNewBufferSi14minNewCapacitySi_GVs22_ContiguousArrayBufferwx7Element_ 387 | _TTSg5CSo6SKNode___TFVs15ContiguousArray16_copyToNewBufferfT8oldCountSi_T_ 388 | _TTSg5CSo6SKNode___TFVs12_ArrayBuffer19_getElementSlowPathfSiPs9AnyObject_ 389 | _TTSf1n_n_cl134_TFFFs25_unimplementedInitializerFT9classNameVs12StaticString8initNameS_4fileS_4lineSu6columnSu_Os5NeverU0_FGSRVs5UInt8_T_U_FGSRS1__T_GSRVs5UInt8____TTSfq1n_cl39_TTRXFo_dGSRVs5UInt8___XFo_dGSRS___iT__XFo_dGSRVs5UInt8____n___TTSgq5T____TFVs12StaticString14withUTF8BufferurfFGSRVs5UInt8_xx 390 | _TTSfq4n_n_d___TTSgq5Vs5UInt8___TFSRCfT5startGSqGSPx__5countSi_GSRx_ 391 | _TTSfq0n_k_k___TFFVs12StaticString14withUTF8BufferurFFGSRVs5UInt8_xxU_FS0_T_ 392 | _TFFFs25_unimplementedInitializerFT9classNameVs12StaticString8initNameS_4fileS_4lineSu6columnSu_Os5NeverU0_FGSRVs5UInt8_T_U_FGSRS1__T_ 393 | _TFs27_bridgeAnythingToObjectiveCurFxPs9AnyObject_ 394 | _TFs25_isClassOrObjCExistentialurFMxSb 395 | get_field_types_CGPoint 396 | __swift_memmove_array8_4 397 | __swift_memcpy_array8_4 398 | __swift_noop_self_return 399 | __swift_memcpy8_4 400 | __swift_noop_void_return 401 | _TMaCSo6SKNode 402 | _TMaC16BWCollectionView20BWCollectionViewItem 403 | get_field_types_BWCollectionViewItem 404 | _TMaGSQSi_ 405 | deinit 406 | _TMaC16BWCollectionView16BWCollectionView 407 | get_field_types_BWCollectionView 408 | _TMaGSQVSC7CGPoint_ 409 | _TMaVSC7CGPoint 410 | _TMaGSQV10Foundation4Date_ 411 | _TMaGSQCSo6SKNode_ 412 | _TMaGSQCSo22UIPanGestureRecognizer_ 413 | _TMaCSo22UIPanGestureRecognizer 414 | _TMaGSqCSo6SKView_ 415 | _TMaCSo6SKView 416 | _TMaGSQSd_ 417 | _TMaGSqP16BWCollectionView24BWCollectionViewDelegate__ 418 | _TMaP16BWCollectionView24BWCollectionViewDelegate_ 419 | _TMaGSqP16BWCollectionView26BWCollectionViewDataSource__ 420 | _TMaP16BWCollectionView26BWCollectionViewDataSource_ 421 | _TTSfq1n_cl39_TTRXFo_dGSRVs5UInt8___XFo_dGSRS___iT__XFo_dGSRVs5UInt8____n___TTSgq5T____TFVs12StaticString14withUTF8BufferurfFGSRVs5UInt8_xx 422 | _TFFs25_unimplementedInitializerFT9classNameVs12StaticString8initNameS_4fileS_4lineSu6columnSu_Os5NeverU0_FGSRVs5UInt8_T_ 423 | snap 424 | _TFFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D04snapFT2toSi_T_U_FCSo6SKNodeT_ 425 | _TTSf4g_g___TFFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D04snapFT2toSi_T_U_FCSo6SKNodeT_ 426 | totalDistance.set 427 | updateIndex 428 | _TTSg5GSaCSo6SKNode_GSaS__s8Sequences___TFEsPs8Sequence6filterfzFzWx8Iterator7Element_SbGSaWxS0_S1___ 429 | _TTSg5CSo6SKNode___TFVs15ContiguousArray6appendfxT_ 430 | _TTSg5CSo6SKNode___TFVs15ContiguousArray36_reserveCapacityAssumingUniqueBufferfT8oldCountSi_T_ 431 | _TTSg5GSaCSo6SKNode_GSaS__s10Collections___TFEsPs10Collectiong5firstGSqWx8Iterator7Element__ 432 | index.set 433 | index.didset 434 | delegate.get 435 | _TTSg5GSaCSo6SKNode_GSaS__s17MutableCollections___TFEsPs17MutableCollection6sortedfT2byFTWx8Iterator7Element_WxS0_S1___Sb_GSaWxS0_S1___ 436 | _TTSg5CSo6SKNode_GSaS__GSaS__s8Sequences___TFVs15ContiguousArrayCuRd__s8SequenceWd__8Iterator7Element_zxrfqd__GS_x_ 437 | _TTSg5CSo6SKNode___TTWurGSax_s8SequencesFS_22_copyToContiguousArrayfT_GVs15ContiguousArrayWx8Iterator7Element__ 438 | _TTSg5CSo6SKNode___TFSa22_copyToContiguousArrayfT_GVs15ContiguousArrayx_ 439 | _TTSg5CSo6SKNode_GVs15ContiguousArrayS__GS0_S__s8Sequences___TFSaCuRd__s8SequenceWd__8Iterator7Element_zxrfqd__GSax_ 440 | _TTSg5CSo6SKNode___TFVs12_ArrayBufferCfT7_bufferGVs22_ContiguousArrayBufferx_19shiftedToStartIndexSi_GS_x_ 441 | _TTSg5GVs15ContiguousArrayCSo6SKNode_GS_S0__s17MutableCollectionsGS_S0__s22RandomAccessCollections___TFesRxs17MutableCollectionxs22RandomAccessCollectionrS_4sortfT2byFTWxPs10Collection8Iterator7Element_WxS2_S3___Sb_T_ 442 | _TTSg5CSo6SKNode___TFVs12_ArrayBuffer19requestNativeBufferfT_GSqGVs22_ContiguousArrayBufferx__ 443 | _TTSg5CSo6SKNode___TFVs15ContiguousArray37_appendElementAssumeUniqueAndCapacityfTSi10newElementx_T_ 444 | _TTSg5CSo6SKNode___TFVs15ContiguousArray40_makeUniqueAndReserveCapacityIfNotUniquefT_T_ 445 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBuffer30isMutableAndUniquelyReferencedfT_Sb 446 | _TTRXFo_oCSo6SKNode_dSbzoPs5Error__XFo_iS__dSbzoPS0___ 447 | _TFFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D011updateIndexFT_T_U_FCSo6SKNodeSb 448 | _TTSf4g___TFFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D011updateIndexFT_T_U_FCSo6SKNodeSb 449 | handlePan 450 | _TTSg5P____TFs27_allocateUninitializedArrayurFBwTGSax_Bp_ 451 | _TTSg5P____TZFSa13_adoptStoragefTGCs23_ContiguousArrayStoragex_5countSi_TGSax_GSpx__ 452 | _TTSg5P____TFVs22_ContiguousArrayBufferCfT5countSi7storageGCs23_ContiguousArrayStoragex__GS_x_ 453 | _TTSg5P____TFVs22_ContiguousArrayBuffer18_initStorageHeaderfT5countSi8capacitySi_T_ 454 | _TTSg5P____TFVs22_ContiguousArrayBufferg19firstElementAddressGSpx_ 455 | _TFFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D09handlePanFT_T_U_FCSo6SKNodeT_ 456 | _TTSf4g_g___TFFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D09handlePanFT_T_U_FCSo6SKNodeT_ 457 | skview.get 458 | panGestureRecognizer.get 459 | removeFromParent 460 | _TToFC16BWCollectionView16BWCollectionViews12dampingRatioSd 461 | dampingRatio.set 462 | _TToFC16BWCollectionView16BWCollectionViewg12dampingRatioSd 463 | spacing.set 464 | spacing.didset 465 | setSpacing 466 | _TTSg5GVs14CountableRangeSi_GS_Si_s14_IndexableBases___TFVs16IndexingIterator4nextfT_GSqwx8_Element_ 467 | _TTSg5SiSis10ComparablesSis11_Strideables___TTWuRxs10Comparablexs11_StrideablewxPS0_6Strides13SignedIntegerrGVs14CountableRangex_s14_IndexableBasesFS4_9formIndexfT5afterRwx5Index_T_ 468 | _TTSg5GVs14CountableRangeSi_GS_Si_s10_Indexables___TFEsPs10_Indexable9formIndexfT5afterRwx5Index_T_ 469 | _TTSg5SiSis10ComparablesSis11_Strideables___TTWuRxs10Comparablexs11_StrideablewxPS0_6Strides13SignedIntegerrGVs14CountableRangex_s14_IndexableBasesFS4_5indexfT5afterwx5Index_wxS5_ 470 | _TTSg5SiSis10ComparablesSis11_Strideables___TFVs14CountableRange5indexfT5afterx_x 471 | _TTWSis11_StrideablesFS_8advancedfT2bywx6Stride_x 472 | _TTSg5GVs14CountableRangeSi_GS_Si_s10_Indexables___TFEsPs10_Indexable20_failEarlyRangeCheckfTwx5Index6boundsGVs5RangewxS0___T_ 473 | spacing.get 474 | biggestItem.get 475 | _TTSg5CSo6SKNode___TFSag5countSi 476 | _TToFC16BWCollectionView16BWCollectionViews7spacingV12CoreGraphics7CGFloat 477 | _TToFC16BWCollectionView16BWCollectionViewg7spacingV12CoreGraphics7CGFloat 478 | _TToFC16BWCollectionView16BWCollectionViews5indexSi 479 | _TToFC16BWCollectionView16BWCollectionViewg5indexSi 480 | /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/DerivedSources/BWCollectionView_vers.c 481 | -------------------------------------------------------------------------------- /Carthage/Build/iOS/B8D5F415-E7C9-3A2D-80D3-9C01E9693B36.bcsymbolmap: -------------------------------------------------------------------------------- 1 | BCSymbolMap Version: 2.0 2 | __TToFC16BWCollectionView16BWCollectionViewg5indexSi 3 | __TToFC16BWCollectionView16BWCollectionViews5indexSi 4 | __TFC16BWCollectionView16BWCollectionViews5indexSi 5 | __TToFC16BWCollectionView16BWCollectionViewg7spacingV12CoreGraphics7CGFloat 6 | __TToFC16BWCollectionView16BWCollectionViews7spacingV12CoreGraphics7CGFloat 7 | __TFC16BWCollectionView16BWCollectionViews7spacingV12CoreGraphics7CGFloat 8 | __TToFC16BWCollectionView16BWCollectionViewg12dampingRatioSd 9 | __TToFC16BWCollectionView16BWCollectionViews12dampingRatioSd 10 | __TToFC16BWCollectionView16BWCollectionViewcfT2atCSo6SKView_S0_ 11 | __TFC16BWCollectionView16BWCollectionViewCfT5coderCSo7NSCoder_GSqS0__ 12 | __TFC16BWCollectionView16BWCollectionViewcfT5coderCSo7NSCoder_GSqS0__ 13 | __TToFC16BWCollectionView16BWCollectionViewcfT5coderCSo7NSCoder_GSqS0__ 14 | __TFC16BWCollectionView16BWCollectionView16removeFromParentfT_T_ 15 | __TToFC16BWCollectionView16BWCollectionView16removeFromParentfT_T_ 16 | __TFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D09handlePanfT_T_ 17 | __TToFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D09handlePanfT_T_ 18 | __TToFC16BWCollectionView16BWCollectionView6updatefSdT_ 19 | __TFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D011updateIndexfT_T_ 20 | __TFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D04snapfT2toSi_T_ 21 | __TFC16BWCollectionView16BWCollectionViewD 22 | __TToFC16BWCollectionView16BWCollectionViewE 23 | __TFC16BWCollectionView16BWCollectionViewcfT_S0_ 24 | __TToFC16BWCollectionView16BWCollectionViewcfT_S0_ 25 | __TMaC16BWCollectionView16BWCollectionView 26 | _swift_rt_swift_getInitializedObjCClass 27 | __TFC16BWCollectionView20BWCollectionViewItemD 28 | __TFC16BWCollectionView20BWCollectionViewItemcfT_S0_ 29 | __TToFC16BWCollectionView20BWCollectionViewItemcfT_S0_ 30 | __TFC16BWCollectionView20BWCollectionViewItemCfT5coderCSo7NSCoder_GSqS0__ 31 | __TFC16BWCollectionView20BWCollectionViewItemcfT5coderCSo7NSCoder_GSqS0__ 32 | __TToFC16BWCollectionView20BWCollectionViewItemcfT5coderCSo7NSCoder_GSqS0__ 33 | __TMaC16BWCollectionView20BWCollectionViewItem 34 | _swift_rt_swift_slowAlloc 35 | _swift_rt_swift_slowDealloc 36 | _swift_rt_swift_getExistentialTypeMetadata 37 | __TMaCSo6SKNode 38 | ___swift_noop_void_return 39 | ___swift_memcpy16_8 40 | ___swift_noop_self_return 41 | ___swift_memcpy_array16_8 42 | ___swift_memmove_array16_8 43 | __TFs27_bridgeAnythingToObjectiveCurFxPs9AnyObject_ 44 | __TTSfq4s___TTSgq5Vs5UInt8___TFSRg5countSi 45 | __TTSg5CSo6SKNode___TFVs12_ArrayBuffer19_getElementSlowPathfSiPs9AnyObject_ 46 | __TTSg5CSo6SKNode___TFVs15ContiguousArray16_copyToNewBufferfT8oldCountSi_T_ 47 | __TTSg5GVs22_ContiguousArrayBufferCSo6SKNode_GS_S0__s20_ArrayBufferProtocols___TFEsPs20_ArrayBufferProtocol31_forceCreateUniqueMutableBufferfT17countForNewBufferSi14minNewCapacitySi_GVs22_ContiguousArrayBufferwx7Element_ 48 | _swift_rt_swift_retain 49 | _swift_rt_swift_release 50 | _swift_rt_swift_deallocObject 51 | _swift_rt_swift_allocObject 52 | __TPA__TFFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D011updateIndexFT_T_U0_FTCSo6SKNodeS1__Sb 53 | __TPA__TTRXFo_oCSo6SKNodeoS__dSb_XFo_iS_iS__dSb_ 54 | __TTSg5GVs12_ArrayBufferCSo6SKNode_GS_S0__s10Collections___TFs32_copyCollectionToContiguousArrayuRxs10CollectionrFxGVs15ContiguousArrayWx8Iterator7Element__ 55 | __TTSg5GVs22_ContiguousArrayBufferCSo6SKNode_GS_S0__s20_ArrayBufferProtocols___TFEsPs20_ArrayBufferProtocol25_outlinedMakeUniqueBufferfT11bufferCountSi_T_ 56 | __TTSg5GVs22_ContiguousArrayBufferCSo6SKNode_GS_S0__s20_ArrayBufferProtocols___TFEsPs20_ArrayBufferProtocol31_forceCreateUniqueMutableBufferfT8newCountSi16requiredCapacitySi_GVs22_ContiguousArrayBufferwx7Element_ 57 | __TTSf4g_n___TFC16BWCollectionView16BWCollectionViewcfT2atCSo6SKView_S0_ 58 | __TTSf4d_n___TFC16BWCollectionView16BWCollectionViewcfT5coderCSo7NSCoder_GSqS0__ 59 | __TTSf4n_n_n_d_n___TTSg5GVs22_ContiguousArrayBufferCSo6SKNode_GS_S0__s20_ArrayBufferProtocols_GVs14_IgnorePointerS0__GS2_S0__s16_PointerFunctions___TFEsPs20_ArrayBufferProtocol22_arrayOutOfPlaceUpdateuRd__s16_PointerFunctionwd__7Elementzwx7ElementrfTRGVs22_ContiguousArrayBufferwxS2__SiSiqd___T_ 60 | __TTSf4n_n_d___TTSg5CSo6SKNode___TFVs22_ContiguousArrayBufferCfT19_uninitializedCountSi15minimumCapacitySi_GS_x_ 61 | __TTSf4g_n___TTSg5GVs15ContiguousArrayCSo6SKNode_GS_S0__s17MutableCollectionsGS_S0__s22RandomAccessCollections___TFesRxs17MutableCollectionxs22RandomAccessCollectionrS_4sortfT2byFTWxPs10Collection8Iterator7Element_WxS2_S3___Sb_T_ 62 | _swift_rt_swift_isUniquelyReferenced_nonNull_native 63 | __TTSf4d_n___TFC16BWCollectionView16BWCollectionView6updatefSdT_ 64 | __TTSf4g_g_g___TFFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D011updateIndexFT_T_U0_FTCSo6SKNodeS1__Sb 65 | __TTSf4n_s_g___TTSg5GSrCSo6SKNode_GSrS__s23BidirectionalCollectionsGSrS__s17MutableCollections___TFs14_insertionSortuRxs23BidirectionalCollectionxs17MutableCollectionrFTRx8subRangeGVs5RangewxPs14_IndexableBase5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_T_ 66 | __TTSf4n_n_s_g___TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs9_siftDownuRxs17MutableCollectionxs22RandomAccessCollectionrFTRx5indexwxPs17_MutableIndexable5Index8subRangeGVs5RangewxS2__2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_T_ 67 | __TTSf4n_n_n_n_g___TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs6_sort3uRxs17MutableCollectionxs22RandomAccessCollectionrFTRxwxPs17_MutableIndexable5IndexwxS2_wxS2_2byFTWxPs10Collection8Iterator7Element_WxS4_S5___Sb_T_ 68 | __TTSf4n_s_g___TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs10_partitionuRxs17MutableCollectionxs22RandomAccessCollectionrFTRx8subRangeGVs5RangewxPs17_MutableIndexable5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_wxS3_ 69 | __TTSf4n_s_n_n___TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs14_introSortImpluRxs17MutableCollectionxs22RandomAccessCollectionrFTRx8subRangeGVs5RangewxPs17_MutableIndexable5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb10depthLimitSi_T_ 70 | __TTSf4n_n_g___TTSg5GVs15ContiguousArrayCSo6SKNode_GS_S0__s17MutableCollectionsGS_S0__s22RandomAccessCollections___TFFesRxs17MutableCollectionxs22RandomAccessCollectionrS_4sortFT2byFTWxPs10Collection8Iterator7Element_WxS2_S3___Sb_T_U_FTGSpWxS2_S3___Si_T_ 71 | __TMaGCs23_ContiguousArrayStorageP__ 72 | _swift_rt_swift_release_n 73 | _OBJC_METACLASS_$__TtC16BWCollectionView16BWCollectionView 74 | __TWvdvC16BWCollectionView16BWCollectionView5indexSi 75 | __TWvdvC16BWCollectionView16BWCollectionView7spacingV12CoreGraphics7CGFloat 76 | __TWvdvC16BWCollectionView16BWCollectionView12dampingRatioSd 77 | __TWvdvC16BWCollectionView16BWCollectionView10dataSourceGSqPS_26BWCollectionViewDataSource__ 78 | __TWvdvC16BWCollectionView16BWCollectionView8delegateGSqPS_24BWCollectionViewDelegate__ 79 | __TWvdvC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D013touchDistanceGSQSd_ 80 | __TWvdvC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D06skviewXwGSqCSo6SKView_ 81 | __TWvdvC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D020panGestureRecognizerGSQCSo22UIPanGestureRecognizer_ 82 | __TWvdvC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D011biggestItemGSQCSo6SKNode_ 83 | __TWvdvC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D019shouldBeginUpdatingSb 84 | __TWvdvC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D04dateGSQV10Foundation4Date_ 85 | __TWvdvC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D08velocityGSQSd_ 86 | __TWvdvC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D07dampingGSQSd_ 87 | __TWvdvC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D016previousVelocityGSQSd_ 88 | __TWvdvC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D013totalDistanceSd 89 | __TWvdvC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D06originGSQVSC7CGPoint_ 90 | __TMnC16BWCollectionView16BWCollectionView 91 | __TWoFC16BWCollectionView16BWCollectionViewg5indexSi 92 | __TWoFC16BWCollectionView16BWCollectionViews5indexSi 93 | __TWoFC16BWCollectionView16BWCollectionViewm5indexSi 94 | __TWoFC16BWCollectionView16BWCollectionViewg7spacingV12CoreGraphics7CGFloat 95 | __TWoFC16BWCollectionView16BWCollectionViews7spacingV12CoreGraphics7CGFloat 96 | __TWoFC16BWCollectionView16BWCollectionViewm7spacingV12CoreGraphics7CGFloat 97 | __TWoFC16BWCollectionView16BWCollectionViewg12dampingRatioSd 98 | __TWoFC16BWCollectionView16BWCollectionViews12dampingRatioSd 99 | __TWoFC16BWCollectionView16BWCollectionViewm12dampingRatioSd 100 | __TWoFC16BWCollectionView16BWCollectionViewg10dataSourceGSqPS_26BWCollectionViewDataSource__ 101 | __TWoFC16BWCollectionView16BWCollectionViews10dataSourceGSqPS_26BWCollectionViewDataSource__ 102 | __TWoFC16BWCollectionView16BWCollectionViewm10dataSourceGSqPS_26BWCollectionViewDataSource__ 103 | __TWoFC16BWCollectionView16BWCollectionViewg8delegateGSqPS_24BWCollectionViewDelegate__ 104 | __TWoFC16BWCollectionView16BWCollectionViews8delegateGSqPS_24BWCollectionViewDelegate__ 105 | __TWoFC16BWCollectionView16BWCollectionViewm8delegateGSqPS_24BWCollectionViewDelegate__ 106 | __TWoFC16BWCollectionView16BWCollectionViewCfT2atCSo6SKView_S0_ 107 | __TWoFC16BWCollectionView16BWCollectionViewCfT5coderCSo7NSCoder_GSqS0__ 108 | __TWoFC16BWCollectionView16BWCollectionView16removeFromParentfT_T_ 109 | __TWoFC16BWCollectionView16BWCollectionViewgP33_DB0AA490047F3829280D7E6C7D4467D013touchDistanceGSQSd_ 110 | __TWoFC16BWCollectionView16BWCollectionViewsP33_DB0AA490047F3829280D7E6C7D4467D013touchDistanceGSQSd_ 111 | __TWoFC16BWCollectionView16BWCollectionViewmP33_DB0AA490047F3829280D7E6C7D4467D013touchDistanceGSQSd_ 112 | __TWoFC16BWCollectionView16BWCollectionViewgP33_DB0AA490047F3829280D7E6C7D4467D06skviewXwGSqCSo6SKView_ 113 | __TWoFC16BWCollectionView16BWCollectionViewsP33_DB0AA490047F3829280D7E6C7D4467D06skviewXwGSqCSo6SKView_ 114 | __TWoFC16BWCollectionView16BWCollectionViewmP33_DB0AA490047F3829280D7E6C7D4467D06skviewXwGSqCSo6SKView_ 115 | __TWoFC16BWCollectionView16BWCollectionViewgP33_DB0AA490047F3829280D7E6C7D4467D020panGestureRecognizerGSQCSo22UIPanGestureRecognizer_ 116 | __TWoFC16BWCollectionView16BWCollectionViewsP33_DB0AA490047F3829280D7E6C7D4467D020panGestureRecognizerGSQCSo22UIPanGestureRecognizer_ 117 | __TWoFC16BWCollectionView16BWCollectionViewmP33_DB0AA490047F3829280D7E6C7D4467D020panGestureRecognizerGSQCSo22UIPanGestureRecognizer_ 118 | __TWoFC16BWCollectionView16BWCollectionViewgP33_DB0AA490047F3829280D7E6C7D4467D011biggestItemGSQCSo6SKNode_ 119 | __TWoFC16BWCollectionView16BWCollectionViewsP33_DB0AA490047F3829280D7E6C7D4467D011biggestItemGSQCSo6SKNode_ 120 | __TWoFC16BWCollectionView16BWCollectionViewmP33_DB0AA490047F3829280D7E6C7D4467D011biggestItemGSQCSo6SKNode_ 121 | __TWoFC16BWCollectionView16BWCollectionViewgP33_DB0AA490047F3829280D7E6C7D4467D019shouldBeginUpdatingSb 122 | __TWoFC16BWCollectionView16BWCollectionViewsP33_DB0AA490047F3829280D7E6C7D4467D019shouldBeginUpdatingSb 123 | __TWoFC16BWCollectionView16BWCollectionViewmP33_DB0AA490047F3829280D7E6C7D4467D019shouldBeginUpdatingSb 124 | __TWoFC16BWCollectionView16BWCollectionViewgP33_DB0AA490047F3829280D7E6C7D4467D04dateGSQV10Foundation4Date_ 125 | __TWoFC16BWCollectionView16BWCollectionViewsP33_DB0AA490047F3829280D7E6C7D4467D04dateGSQV10Foundation4Date_ 126 | __TWoFC16BWCollectionView16BWCollectionViewmP33_DB0AA490047F3829280D7E6C7D4467D04dateGSQV10Foundation4Date_ 127 | __TWoFC16BWCollectionView16BWCollectionViewgP33_DB0AA490047F3829280D7E6C7D4467D08velocityGSQSd_ 128 | __TWoFC16BWCollectionView16BWCollectionViewsP33_DB0AA490047F3829280D7E6C7D4467D08velocityGSQSd_ 129 | __TWoFC16BWCollectionView16BWCollectionViewmP33_DB0AA490047F3829280D7E6C7D4467D08velocityGSQSd_ 130 | __TWoFC16BWCollectionView16BWCollectionViewgP33_DB0AA490047F3829280D7E6C7D4467D07dampingGSQSd_ 131 | __TWoFC16BWCollectionView16BWCollectionViewsP33_DB0AA490047F3829280D7E6C7D4467D07dampingGSQSd_ 132 | __TWoFC16BWCollectionView16BWCollectionViewmP33_DB0AA490047F3829280D7E6C7D4467D07dampingGSQSd_ 133 | __TWoFC16BWCollectionView16BWCollectionViewgP33_DB0AA490047F3829280D7E6C7D4467D016previousVelocityGSQSd_ 134 | __TWoFC16BWCollectionView16BWCollectionViewsP33_DB0AA490047F3829280D7E6C7D4467D016previousVelocityGSQSd_ 135 | __TWoFC16BWCollectionView16BWCollectionViewmP33_DB0AA490047F3829280D7E6C7D4467D016previousVelocityGSQSd_ 136 | __TWoFC16BWCollectionView16BWCollectionViewgP33_DB0AA490047F3829280D7E6C7D4467D013totalDistanceSd 137 | __TWoFC16BWCollectionView16BWCollectionViewsP33_DB0AA490047F3829280D7E6C7D4467D013totalDistanceSd 138 | __TWoFC16BWCollectionView16BWCollectionViewmP33_DB0AA490047F3829280D7E6C7D4467D013totalDistanceSd 139 | __TWoFC16BWCollectionView16BWCollectionViewgP33_DB0AA490047F3829280D7E6C7D4467D06originGSQVSC7CGPoint_ 140 | __TWoFC16BWCollectionView16BWCollectionViewsP33_DB0AA490047F3829280D7E6C7D4467D06originGSQVSC7CGPoint_ 141 | __TWoFC16BWCollectionView16BWCollectionViewmP33_DB0AA490047F3829280D7E6C7D4467D06originGSQVSC7CGPoint_ 142 | __TWoFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D010reloadDatafT_T_ 143 | __TWoFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D010setSpacingfT_T_ 144 | __TWoFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D09handlePanfT_T_ 145 | __TWoFC16BWCollectionView16BWCollectionView6updatefSdT_ 146 | __TWoFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D011updateIndexfT_T_ 147 | __TWoFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D04snapfT2toSi_T_ 148 | __TMLC16BWCollectionView16BWCollectionView 149 | __TMfC16BWCollectionView16BWCollectionView 150 | __TMRfC16BWCollectionView16BWCollectionView 151 | __TMRsC16BWCollectionView16BWCollectionView 152 | _OBJC_METACLASS_$__TtC16BWCollectionView20BWCollectionViewItem 153 | __TWvdvC16BWCollectionView20BWCollectionViewItemP33_DB0AA490047F3829280D7E6C7D4467D05indexGSQSi_ 154 | __TMnC16BWCollectionView20BWCollectionViewItem 155 | __TWoFC16BWCollectionView20BWCollectionViewItemgP33_DB0AA490047F3829280D7E6C7D4467D05indexGSQSi_ 156 | __TWoFC16BWCollectionView20BWCollectionViewItemsP33_DB0AA490047F3829280D7E6C7D4467D05indexGSQSi_ 157 | __TWoFC16BWCollectionView20BWCollectionViewItemmP33_DB0AA490047F3829280D7E6C7D4467D05indexGSQSi_ 158 | __TWoFC16BWCollectionView20BWCollectionViewItemCfT_S0_ 159 | __TWoFC16BWCollectionView20BWCollectionViewItemCfT5coderCSo7NSCoder_GSqS0__ 160 | __TMLC16BWCollectionView20BWCollectionViewItem 161 | __TMfC16BWCollectionView20BWCollectionViewItem 162 | __TMRfC16BWCollectionView20BWCollectionViewItem 163 | __TMRsC16BWCollectionView20BWCollectionViewItem 164 | __TMRfP16BWCollectionView26BWCollectionViewDataSource_ 165 | __TMp16BWCollectionView26BWCollectionViewDataSource 166 | __TMRfP16BWCollectionView24BWCollectionViewDelegate_ 167 | __TMp16BWCollectionView24BWCollectionViewDelegate 168 | __swift_FORCE_LOAD_$_swiftUIKit_$_BWCollectionView 169 | __swift_FORCE_LOAD_$_swiftCoreImage_$_BWCollectionView 170 | __swift_FORCE_LOAD_$_swiftDarwin_$_BWCollectionView 171 | __swift_FORCE_LOAD_$_swiftCoreGraphics_$_BWCollectionView 172 | __swift_FORCE_LOAD_$_swiftDispatch_$_BWCollectionView 173 | __swift_FORCE_LOAD_$_swiftObjectiveC_$_BWCollectionView 174 | __swift_FORCE_LOAD_$_swiftFoundation_$_BWCollectionView 175 | __swift_FORCE_LOAD_$_swiftQuartzCore_$_BWCollectionView 176 | __swift_FORCE_LOAD_$_swiftSpriteKit_$_BWCollectionView 177 | __swift_FORCE_LOAD_$_swiftGLKit_$_BWCollectionView 178 | __swift_FORCE_LOAD_$_swiftsimd_$_BWCollectionView 179 | ___swift_reflection_version 180 | __TMRfCSo6SKView 181 | __TMRsCSo6SKView 182 | __TMRfCSo22UIPanGestureRecognizer 183 | __TMRsCSo22UIPanGestureRecognizer 184 | __TMRfCSo6SKNode 185 | __TMRsCSo6SKNode 186 | __TMRbVSC7CGPoint 187 | __TMLGSQSi_ 188 | __TMLGSqP16BWCollectionView26BWCollectionViewDataSource__ 189 | __TMLP16BWCollectionView26BWCollectionViewDataSource_ 190 | __TMLGSqP16BWCollectionView24BWCollectionViewDelegate__ 191 | __TMLP16BWCollectionView24BWCollectionViewDelegate_ 192 | __TMLGSQSd_ 193 | __TMLGSqCSo6SKView_ 194 | __TMLCSo6SKView 195 | __TMLGSQCSo22UIPanGestureRecognizer_ 196 | __TMLCSo22UIPanGestureRecognizer 197 | __TMLGSQCSo6SKNode_ 198 | __TMLCSo6SKNode 199 | __TMLGSQV10Foundation4Date_ 200 | __TMLGSQVSC7CGPoint_ 201 | __TMLVSC7CGPoint 202 | __TWVVSC7CGPoint 203 | __TMnVSC7CGPoint 204 | __TMVSC7CGPoint 205 | l_OBJC_LABEL_PROTOCOL_$__TtPs9AnyObject_ 206 | l_OBJC_PROTOCOL_REFERENCE_$__TtPs9AnyObject_ 207 | __TMLGCs23_ContiguousArrayStorageCSo6SKNode_ 208 | __TMLGSrCSo6SKNode_ 209 | __TMLGCs23_ContiguousArrayStorageP__ 210 | __TMLP_ 211 | _objc_classes 212 | __TMC16BWCollectionView16BWCollectionView 213 | __TMC16BWCollectionView20BWCollectionViewItem 214 | Apple LLVM version 8.1.0 (clang-802.0.42) 215 | -emit-bc "/Users/BWide/Dropbox (BEPiD)/Xcode/BWCollectionViewExample/BWCollectionViewExample/BWCollectionView.swift" -target arm64-apple-ios10.3 -Xllvm -aarch64-use-tbi -enable-objc-interop -sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk -I /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Products/Release-iphoneos -F /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Products/Release-iphoneos -g -import-underlying-module -module-cache-path /Users/BWide/Library/Developer/Xcode/DerivedData/ModuleCache -serialize-debugging-options -Xcc -I/Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/BWCollectionView-generated-files.hmap -Xcc -I/Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/BWCollectionView-own-target-headers.hmap -Xcc -I/Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/BWCollectionView-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/BWCollectionView-project-headers.hmap -Xcc -I/Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Products/Release-iphoneos/include -Xcc -I/Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/DerivedSources/arm64 -Xcc -I/Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/DerivedSources -Xcc -ivfsoverlay -Xcc /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/unextended-module-overlay.yaml -Xcc "-working-directory/Users/BWide/Dropbox (BEPiD)/Xcode/BWCollectionViewExample" -emit-module-doc-path /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/Objects-normal/arm64/BWCollectionView.swiftdoc -serialize-diagnostics-path /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/Objects-normal/arm64/BWCollectionView.dia -O -parse-as-library -module-name BWCollectionView -emit-module-path /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/Objects-normal/arm64/BWCollectionView.swiftmodule -emit-objc-header-path /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/Objects-normal/arm64/BWCollectionView-Swift.h -emit-dependencies-path /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/Objects-normal/arm64/BWCollectionView.d -num-threads 4 -o /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/Objects-normal/arm64/BWCollectionView.bc -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift 216 | 217 | /Users/BWide/Dropbox (BEPiD)/Xcode/BWCollectionViewExample 218 | Apple Swift version 3.1 (swiftlang-802.0.53 clang-802.0.42) 219 | /Users/BWide/Dropbox (BEPiD)/Xcode/BWCollectionViewExample/BWCollectionViewExample/BWCollectionView.swift 220 | _TMaGCs23_ContiguousArrayStorageP__ 221 | BWCollectionView.swift 222 | /Users/BWide/Dropbox (BEPiD)/Xcode/BWCollectionViewExample/BWCollectionViewExample 223 | _TMaP_ 224 | _TTSf4n_n_g___TTSg5GVs15ContiguousArrayCSo6SKNode_GS_S0__s17MutableCollectionsGS_S0__s22RandomAccessCollections___TFFesRxs17MutableCollectionxs22RandomAccessCollectionrS_4sortFT2byFTWxPs10Collection8Iterator7Element_WxS2_S3___Sb_T_U_FTGSpWxS2_S3___Si_T_ 225 | _TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFesRxs17MutableCollectionxs22RandomAccessCollectionrS_4sortfT2byFTWxPs10Collection8Iterator7Element_WxS2_S3___Sb_T_ 226 | _TTSg5CSo6SKNode___TTWurGSrx_s17_MutableIndexablesFS_g8endIndexwx5Index 227 | _TTSg5CSo6SKNode___TFSrg8endIndexSi 228 | _TTSg5CSo6SKNode___TFSrg5countSi 229 | _TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs10_introSortuRxs17MutableCollectionxs22RandomAccessCollectionrFTRx8subRangeGVs5RangewxPs17_MutableIndexable5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_T_ 230 | _TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs14_introSortImpluRxs17MutableCollectionxs22RandomAccessCollectionrFTRx8subRangeGVs5RangewxPs17_MutableIndexable5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb10depthLimitSi_T_ 231 | _TTSg5CSo6SKNode___TFSrCfT5startGSqGSpx__5countSi_GSrx_ 232 | _TTSg5GSpCSo6SKNode__GSpS_____TFSq3mapurfzFzxqd__GSqqd___ 233 | _TTSr5CSo6SKNode___TTRGrXFo_dGSpx__dGSpx_zoPs5Error__XFo_iGSpx__iGSpx_zoPS___ 234 | _TTSg5CSo6SKNode___TTRGrXFo_dGSpx__dGSpx_zoPs5Error__XFo_iGSpx__iGSpx_zoPS___ 235 | _TTSg5CSo6SKNode___TFFSrcFT5startGSqGSpx__5countSi_GSrx_U_FGSpx_GSpx_ 236 | _TTSf4n_s_n_n___TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs14_introSortImpluRxs17MutableCollectionxs22RandomAccessCollectionrFTRx8subRangeGVs5RangewxPs17_MutableIndexable5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb10depthLimitSi_T_ 237 | _TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs9_heapSortuRxs17MutableCollectionxs22RandomAccessCollectionrFTRx8subRangeGVs5RangewxPs17_MutableIndexable5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_T_ 238 | _TTSf4n_s_g___TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs9_heapSortuRxs17MutableCollectionxs22RandomAccessCollectionrFTRx8subRangeGVs5RangewxPs17_MutableIndexable5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_T_ 239 | _TTSg5CSo6SKNode___TTWurGSrx_s17MutableCollectionsFS_m9subscriptFwx5IndexWx8Iterator7Element_ 240 | _TTSg5CSo6SKNode___TFSrm9subscriptFSix 241 | _TTSg5CSo6SKNode___TFSrg9subscriptFSix 242 | _TTSg5CSo6SKNode___TTWurGSrx_s23BidirectionalCollectionsFS_9formIndexfT6beforeRwx5Index_T_ 243 | _TTSg5CSo6SKNode___TFSr9formIndexfT6beforeRSi_T_ 244 | _TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs8_heapifyuRxs17MutableCollectionxs22RandomAccessCollectionrFTRx8subRangeGVs5RangewxPs17_MutableIndexable5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_T_ 245 | _TTSg5CSo6SKNode___TTWurGSrx_s10CollectionsFS_5indexfTwx5Index8offsetBywx13IndexDistance_wxS0_ 246 | _TTSg5CSo6SKNode___TFSr5indexfTSi8offsetBySi_Si 247 | _TTSg5CSo6SKNode___TTWurGSrx_s10CollectionsFS_8distancefT4fromwx5Index2towxS0__wx13IndexDistance 248 | _TTSg5CSo6SKNode___TFSr8distancefT4fromSi2toSi_Si 249 | _TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs10_partitionuRxs17MutableCollectionxs22RandomAccessCollectionrFTRx8subRangeGVs5RangewxPs17_MutableIndexable5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_wxS3_ 250 | _TTSg5SiSis9Equatables___TFsoi2neuRxs9EquatablerFTxx_Sb 251 | _TTWSis9EquatablesZFS_oi2eefTxx_Sb 252 | _TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs9_siftDownuRxs17MutableCollectionxs22RandomAccessCollectionrFTRx5indexwxPs17_MutableIndexable5Index8subRangeGVs5RangewxS2__2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_T_ 253 | _TFFSrm9subscriptFSixU_T_ 254 | _TFSrs9subscriptFSix 255 | _TMaGSrCSo6SKNode_ 256 | _TTSg5CSo6SKNode___TFs4swapurFTRxRx_T_ 257 | _TTSg5GSrCSo6SKNode_GSrS__s23BidirectionalCollectionsGSrS__s17MutableCollections___TFs14_insertionSortuRxs23BidirectionalCollectionxs17MutableCollectionrFTRx8subRangeGVs5RangewxPs14_IndexableBase5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_T_ 258 | _TTWSis10ComparablesZFS_oi1lfTxx_Sb 259 | _TTSf4n_s_g___TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs10_partitionuRxs17MutableCollectionxs22RandomAccessCollectionrFTRx8subRangeGVs5RangewxPs17_MutableIndexable5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_wxS3_ 260 | _TTSg5CSo6SKNode___TTWurGSrx_s17MutableCollectionsFS_g9subscriptFwx5IndexWx8Iterator7Element_ 261 | _TTSg5CSo6SKNode___TTWurGSrx_s17_MutableIndexablesFS_9formIndexfT5afterRwx5Index_T_ 262 | _TTSg5CSo6SKNode___TFSr9formIndexfT5afterRSi_T_ 263 | _TTSg5SiSis14_SignedIntegers_SuSus15UnsignedIntegers___TFs11numericCastu0_Rxs14_SignedInteger_s15UnsignedIntegerrFxq_ 264 | _TTSg5CSo6SKNode___TTWurGSrx_s23BidirectionalCollectionsFS_5indexfT6beforewx5Index_wxS0_ 265 | _TTSg5CSo6SKNode___TFSr5indexfT6beforeSi_Si 266 | _TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs6_sort3uRxs17MutableCollectionxs22RandomAccessCollectionrFTRxwxPs17_MutableIndexable5IndexwxS2_wxS2_2byFTWxPs10Collection8Iterator7Element_WxS4_S5___Sb_T_ 267 | _TTSf4n_n_n_n_g___TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs6_sort3uRxs17MutableCollectionxs22RandomAccessCollectionrFTRxwxPs17_MutableIndexable5IndexwxS2_wxS2_2byFTWxPs10Collection8Iterator7Element_WxS4_S5___Sb_T_ 268 | _TTSf4n_n_s_g___TTSg5GSrCSo6SKNode_GSrS__s17MutableCollectionsGSrS__s22RandomAccessCollections___TFs9_siftDownuRxs17MutableCollectionxs22RandomAccessCollectionrFTRx5indexwxPs17_MutableIndexable5Index8subRangeGVs5RangewxS2__2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_T_ 269 | _TTSg5CSo6SKNode___TTWurGSrx_s17_MutableIndexablesFS_5indexfT5afterwx5Index_wxS0_ 270 | _TTSg5CSo6SKNode___TFSr5indexfT5afterSi_Si 271 | _TTWSis17IntegerArithmeticsZFS_oi1pfTxx_x 272 | _TTWSis10ComparablesZFS_oi2gefTxx_Sb 273 | _TTSf4n_s_g___TTSg5GSrCSo6SKNode_GSrS__s23BidirectionalCollectionsGSrS__s17MutableCollections___TFs14_insertionSortuRxs23BidirectionalCollectionxs17MutableCollectionrFTRx8subRangeGVs5RangewxPs14_IndexableBase5Index_2byFTWxPs10Collection8Iterator7Element_WxS5_S6___Sb_T_ 274 | _TTSg5CSo6SKNode___TTWurGSrx_s17MutableCollectionsFS_s9subscriptFwx5IndexWx8Iterator7Element_ 275 | _TTSg5CSo6SKNode___TFSrs9subscriptFSix 276 | _TTSg5SiSis10Comparables___TFVs5Rangeg7isEmptySb 277 | _TTSf4g_g_g___TFFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D011updateIndexFT_T_U0_FTCSo6SKNodeS1__Sb 278 | distance 279 | origin.get 280 | update 281 | _TTSg5GSaCSo6SKNode_GSaS__s8Sequences___TFEsPs8Sequence7forEachfzFzWx8Iterator7Element_T_T_ 282 | _TTSg5GSaCSo6SKNode_GSaS__s14_IndexableBases___TTWuRxs14_IndexableBaserGVs16IndexingIteratorx_s16IteratorProtocolsFS1_4nextfT_GSqwx7Element_ 283 | _TTSg5GSaCSo6SKNode_GSaS__s14_IndexableBases___TFVs16IndexingIterator4nextfT_GSqwx8_Element_ 284 | _TTSg5CSo6SKNode___TTWurGSax_s14_IndexableBasesFS_g9subscriptFwx5Indexwx8_Element 285 | _TTSg5CSo6SKNode___TFSag9subscriptFSix 286 | _TTSg5CSo6SKNode___TFSa15_checkSubscriptfTSi20wasNativeTypeCheckedSb_Vs16_DependenceToken 287 | _TTSg5CSo6SKNode___TFVs12_ArrayBuffer37_checkInoutAndNativeTypeCheckedBoundsfTSi20wasNativeTypeCheckedSb_T_ 288 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBuffer20_checkValidSubscriptfSiT_ 289 | _TTSg5CSo6SKNode___TTWurGSax_s14_IndexableBasesFS_9formIndexfT5afterRwx5Index_T_ 290 | _TTSg5CSo6SKNode___TFSa9formIndexfT5afterRSi_T_ 291 | previousVelocity.set 292 | index.get 293 | shouldBeginUpdating.set 294 | previousVelocity.get 295 | velocity.get 296 | totalDistance.materialize 297 | date.set 298 | damping.set 299 | dampingRatio.get 300 | damping.get 301 | velocity.set 302 | _TTSg5CSo6SKNode___TFSa11_getElementfTSi20wasNativeTypeCheckedSb22matchingSubscriptCheckVs16_DependenceToken_x 303 | _TTSg5CSo6SKNode___TFVs12_ArrayBuffer10getElementfTSi20wasNativeTypeCheckedSb_x 304 | _TTRXFo_oCSo6SKNode_zoPs5Error__XFo_iS__zoPS0___ 305 | _TFFC16BWCollectionView16BWCollectionView6updateFSdT_U_FCSo6SKNodeT_ 306 | _TTSf4g_g___TFFC16BWCollectionView16BWCollectionView6updateFSdT_U_FCSo6SKNodeT_ 307 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBufferg9subscriptFSix 308 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBuffer10getElementfSix 309 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBufferg5countSi 310 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBufferg19firstElementAddressGSpx_ 311 | _TTSg5CSo6SKNode___TFVs12_ArrayBufferg7_nativeGVs22_ContiguousArrayBufferx_ 312 | _TTSg5CSo6SKNode___TFSa29_hoistableIsNativeTypeCheckedfT_Sb 313 | _TTSg5CSo6SKNode___TFVs12_ArrayBufferg32arrayPropertyIsNativeTypeCheckedSb 314 | _TTSg5CSo6SKNode___TFVs12_ArrayBufferg20_isNativeTypeCheckedSb 315 | _TTSg5CSo6SKNode___TTWurGSax_s14_IndexableBasesFS_g8endIndexwx5Index 316 | _TTSg5CSo6SKNode___TFSag8endIndexSi 317 | _TTSg5CSo6SKNode___TFSa9_getCountfT_Si 318 | _TTSg5CSo6SKNode___TFVs12_ArrayBufferg5countSi 319 | _TTSg5CSo6SKNode___TFVs12_ArrayBufferg10_nonNativePs12_NSArrayCore_ 320 | _TTSg5CSo6SKNode___TFVs12_ArrayBufferg9_isNativeSb 321 | date.get 322 | shouldBeginUpdating.get 323 | _TTSf4g_n___TTSg5GVs15ContiguousArrayCSo6SKNode_GS_S0__s17MutableCollectionsGS_S0__s22RandomAccessCollections___TFesRxs17MutableCollectionxs22RandomAccessCollectionrS_4sortfT2byFTWxPs10Collection8Iterator7Element_WxS2_S3___Sb_T_ 324 | _TTSg5CSo6SKNode_T____TTWurGVs15ContiguousArrayx_s17MutableCollectionsFS0_42_withUnsafeMutableBufferPointerIfSupportedurfzFzTGSpWx8Iterator7Element__Si_qd__GSqqd___ 325 | _TTSg5CSo6SKNode_T____TFVs15ContiguousArray42_withUnsafeMutableBufferPointerIfSupportedurfzFzTGSpx_Si_qd__GSqqd___ 326 | _TTSg5CSo6SKNode_T____TFVs15ContiguousArray30withUnsafeMutableBufferPointerurfzFzRGSrx_qd__qd__ 327 | _TTSg5CSo6SKNode_T____TFFVs15ContiguousArray30withUnsafeMutableBufferPointerurFzFzRGSrx_qd__qd__L_6$deferu__rfT_T_ 328 | _TTSg5GVs15ContiguousArrayCSo6SKNode____TFs4swapurFTRxRx_T_ 329 | _TTSf1n_n_cl246_TTSg5GVs15ContiguousArrayCSo6SKNode_GS_S0__s17MutableCollectionsGS_S0__s22RandomAccessCollections___TTRGRxs17MutableCollectionxs22RandomAccessCollectionrXFo_dGSpWxPs10Collection8Iterator7Element__dSi_zoPs5Error__XFo_dGSpWxS2_S3___dSi_iT_zoPS4___XFo_dGSpCSo6SKNode_dSi_zoPs5Error_____TTSg5CSo6SKNode_T____TFFVs15ContiguousArray42_withUnsafeMutableBufferPointerIfSupportedurFzFzTGSpx_Si_qd__GSqqd___U_FzRGSrx_qd__ 330 | _TTSg5GVs15ContiguousArrayCSo6SKNode_GS_S0__s17MutableCollectionsGS_S0__s22RandomAccessCollections___TTRGRxs17MutableCollectionxs22RandomAccessCollectionrXFo_dGSpWxPs10Collection8Iterator7Element__dSi_zoPs5Error__XFo_dGSpWxS2_S3___dSi_iT_zoPS4___ 331 | _TTSg5GVs15ContiguousArrayCSo6SKNode_GS_S0__s17MutableCollectionsGS_S0__s22RandomAccessCollections___TFFesRxs17MutableCollectionxs22RandomAccessCollectionrS_4sortFT2byFTWxPs10Collection8Iterator7Element_WxS2_S3___Sb_T_U_FTGSpWxS2_S3___Si_T_ 332 | _TTSf4s___TTSg5CSo6SKNode___TFSrg5countSi 333 | _TTSg5CSo6SKNode___TFVs15ContiguousArrayg5countSi 334 | _TTSg5CSo6SKNode___TFVs15ContiguousArray9_getCountfT_Si 335 | _TTSf4n_n_d___TTSg5CSo6SKNode___TFVs22_ContiguousArrayBufferCfT19_uninitializedCountSi15minimumCapacitySi_GS_x_ 336 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBuffer18_initStorageHeaderfT5countSi8capacitySi_T_ 337 | _TMaGCs23_ContiguousArrayStorageCSo6SKNode_ 338 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBufferCfT_GS_x_ 339 | _TTSf4n_n_n_d_n___TTSg5GVs22_ContiguousArrayBufferCSo6SKNode_GS_S0__s20_ArrayBufferProtocols_GVs14_IgnorePointerS0__GS2_S0__s16_PointerFunctions___TFEsPs20_ArrayBufferProtocol22_arrayOutOfPlaceUpdateuRd__s16_PointerFunctionwd__7Elementzwx7ElementrfTRGVs22_ContiguousArrayBufferwxS2__SiSiqd___T_ 340 | _TTSg5CSo6SKNode___TTWurGVs22_ContiguousArrayBufferx_s20_ArrayBufferProtocolsFS0_13_copyContentsfT8subRangeGVs5RangeSi_12initializingGSpwx7Element__GSpwxS2__ 341 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBuffer13_copyContentsfT8subRangeGVs5RangeSi_12initializingGSpx__GSpx_ 342 | _TTSg5CSo6SKNode___TFSp10initializefT4fromGSPx_5countSi_T_ 343 | _TTSg5CSo6SKNode___TTWurGVs22_ContiguousArrayBufferx_s20_ArrayBufferProtocolsFS0_g8endIndexSi 344 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBufferg8endIndexSi 345 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBuffers5countSi 346 | _TTSg5CSo6SKNode___TFSp12deinitializefT5countSi_Sv 347 | _TTSg5CSo6SKNode___TFSp14moveInitializefT4fromGSpx_5countSi_T_ 348 | _TTSg5CSo6SKNode___TTWurGVs22_ContiguousArrayBufferx_s20_ArrayBufferProtocolsFS0_g19firstElementAddressGSpwx7Element_ 349 | _TTSg5CSo6SKNode___TTWurGVs22_ContiguousArrayBufferx_s20_ArrayBufferProtocolsFS0_33requestUniqueMutableBackingBufferfT15minimumCapacitySi_GSqGS_wx7Element__ 350 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBuffer33requestUniqueMutableBackingBufferfT15minimumCapacitySi_GSqGS_x__ 351 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBufferg8capacitySi 352 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBuffer20isUniquelyReferencedfT_Sb 353 | _TTSg5CSo6SKNode___TTWurGVs22_ContiguousArrayBufferx_s20_ArrayBufferProtocolsFS0_g5countSi 354 | init 355 | _TTSg5GVs22_ContiguousArrayBufferCSo6SKNode_GS_S0__s20_ArrayBufferProtocols___TFEsPs20_ArrayBufferProtocol31_forceCreateUniqueMutableBufferfT8newCountSi16requiredCapacitySi_GVs22_ContiguousArrayBufferwx7Element_ 356 | _TTSg5GVs22_ContiguousArrayBufferCSo6SKNode_GS_S0__s20_ArrayBufferProtocols___TFEsPs20_ArrayBufferProtocol35_forceCreateUniqueMutableBufferImplfT14countForBufferSi14minNewCapacitySi16requiredCapacitySi_GVs22_ContiguousArrayBufferwx7Element_ 357 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBufferCfT19_uninitializedCountSi15minimumCapacitySi_GS_x_ 358 | _TTSg5CSo6SKNode___TTWurGVs22_ContiguousArrayBufferx_s20_ArrayBufferProtocolsFS0_g8capacitySi 359 | _TTSg5GVs22_ContiguousArrayBufferCSo6SKNode_GS_S0__s20_ArrayBufferProtocols___TFEsPs20_ArrayBufferProtocol25_outlinedMakeUniqueBufferfT11bufferCountSi_T_ 360 | _TTSg5GVs22_ContiguousArrayBufferCSo6SKNode_GS_S0__s20_ArrayBufferProtocols_GVs14_IgnorePointerS0__GS2_S0__s16_PointerFunctions___TFEsPs20_ArrayBufferProtocol22_arrayOutOfPlaceUpdateuRd__s16_PointerFunctionwd__7Elementzwx7ElementrfTRGVs22_ContiguousArrayBufferwxS2__SiSiqd___T_ 361 | _TTSg5GVs12_ArrayBufferCSo6SKNode_GS_S0__s10Collections___TFs32_copyCollectionToContiguousArrayuRxs10CollectionrFxGVs15ContiguousArrayWx8Iterator7Element__ 362 | _TTSg5CSo6SKNode___TTWurGVs12_ArrayBufferx_s14_IndexableBasesFS0_9formIndexfT5afterRwx5Index_T_ 363 | _TTSg5GVs12_ArrayBufferCSo6SKNode_GS_S0__s10_Indexables___TFEsPs10_Indexable9formIndexfT5afterRwx5Index_T_ 364 | _TTSg5CSo6SKNode___TTWurGVs12_ArrayBufferx_s14_IndexableBasesFS0_5indexfT5afterwx5Index_wxS1_ 365 | _TTSg5GVs12_ArrayBufferCSo6SKNode_GS_S0__s22RandomAccessCollections___TFesRxs22RandomAccessCollectionwx5Indexs10Strideablewx7IndiceszGVs14CountableRangewxS0__WxS0_6Stride_zwx13IndexDistanceWxS2_S0__zwxS0_WxS2_S5__zwxS5_WxS2_7Indices_zGS3_wxS0__WxS2_8Iterator_zGVs16IndexingIteratorGS3_wxS0___WxS2_11SubSequence_zGS3_wxS0__WxS2_8_Element_zwxS0_WxS2_S6_S0__zwxS0_WxS2_S6_S5__zwxS5_WxS2_S6_S6__zGS3_wxS0__WxS2_S6_S7__zGS8_GS3_wxS0___WxS2_S6_S9__zGS3_wxS0__WxS2_S6_S10__zwxS0_WxS2_S7_7Element_zwxS0_WxS2_S9_S0__zwxS0_WxS2_S9_13IndexDistance_zwxS5_WxS2_S9_S6__zGS3_wxS0__WxS2_S9_S7__zGS8_GS3_wxS0___WxS2_S9_S9__zGS3_wxS0__WxS2_S9_S10__zwxS0_WxS2_S6_S6_S0__zwxS0_WxS2_S6_S6_S5__zwxS5_WxS2_S6_S6_S7__zGS8_GS3_wxS0___WxS2_S6_S6_S9__zGS3_wxS0__WxS2_S6_S6_S10__zwxS0_WxS2_S6_S7_S11__zwxS0_WxS2_S6_S9_S0__zwxS0_WxS2_S6_S9_S7__zGS8_GS3_wxS0___WxS2_S6_S9_S9__zGS3_wxS0__WxS2_S6_S9_S10__zwxS0_WxS2_S9_S6_S0__zwxS0_WxS2_S9_S6_S5__zwxS5_WxS2_S9_S6_S7__zGS8_GS3_wxS0___WxS2_S9_S6_S9__zGS3_wxS0__WxS2_S9_S6_S10__zwxS0_WxS2_S9_S7_S11__zwxS0_WxS2_S9_S9_S0__zwxS0_WxS2_S9_S9_S7__zGS8_GS3_wxS0___WxS2_S9_S9_S9__zGS3_wxS0__WxS2_S9_S9_S10__zwxS0_WxS2_S6_S6_S7_S11__zwxS0_WxS2_S6_S9_S7_S11__zwxS0_WxS2_S9_S6_S7_S11__zwxS0_WxS2_S9_S9_S7_S11__zwxS0_rS_5indexfT5afterwxS0__wxS0_ 366 | _TTWSis10StrideablesFS_8advancedfT2bywx6Stride_x 367 | _TTSg5CSo6SKNode___TTWurGVs12_ArrayBufferx_s14_IndexableBasesFS0_20_failEarlyRangeCheckfTwx5Index6boundsGVs5RangewxS1___T_ 368 | _TTSg5GVs12_ArrayBufferCSo6SKNode_GS_S0__s10_Indexables___TFEsPs10_Indexable20_failEarlyRangeCheckfTwx5Index6boundsGVs5RangewxS0___T_ 369 | _TTSg5CSo6SKNode___TTWurGVs12_ArrayBufferx_s14_IndexableBasesFS0_g8endIndexwx5Index 370 | _TTSg5CSo6SKNode___TFVs12_ArrayBufferg8endIndexSi 371 | _TTSg5CSo6SKNode___TFSp10initializefT2tox5countSi_T_ 372 | _TTSg5CSo6SKNode___TTWurGVs12_ArrayBufferx_s10CollectionsFS0_g9subscriptFwx5IndexWx8Iterator7Element_ 373 | _TTSg5CSo6SKNode___TFVs12_ArrayBufferg9subscriptFSix 374 | _TTSg5CSo6SKNode___TFVs15ContiguousArrayCfT_GS_x_ 375 | _TTSg5CSo6SKNode___TTWurGVs12_ArrayBufferx_s10CollectionsFS0_g5countwx13IndexDistance 376 | _TPA__TTRXFo_oCSo6SKNodeoS__dSb_XFo_iS_iS__dSb_ 377 | _TTRXFo_oCSo6SKNodeoS__dSb_XFo_iS_iS__dSb_ 378 | objectdestroy.2 379 | _TPA__TFFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D011updateIndexFT_T_U0_FTCSo6SKNodeS1__Sb 380 | _TFFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D011updateIndexFT_T_U0_FTCSo6SKNodeS1__Sb 381 | objectdestroy 382 | _TTSg5GVs22_ContiguousArrayBufferCSo6SKNode_GS_S0__s20_ArrayBufferProtocols___TFEsPs20_ArrayBufferProtocol31_forceCreateUniqueMutableBufferfT17countForNewBufferSi14minNewCapacitySi_GVs22_ContiguousArrayBufferwx7Element_ 383 | _TTSg5CSo6SKNode___TFVs15ContiguousArray16_copyToNewBufferfT8oldCountSi_T_ 384 | _TTSg5CSo6SKNode___TFVs12_ArrayBuffer19_getElementSlowPathfSiPs9AnyObject_ 385 | _TTSfq4s___TTSgq5Vs5UInt8___TFSRg5countSi 386 | _TFs27_bridgeAnythingToObjectiveCurFxPs9AnyObject_ 387 | _TFs25_isClassOrObjCExistentialurFMxSb 388 | get_field_types_CGPoint 389 | __swift_memmove_array16_8 390 | __swift_memcpy_array16_8 391 | __swift_noop_self_return 392 | __swift_memcpy16_8 393 | __swift_noop_void_return 394 | _TMaCSo6SKNode 395 | _TMaC16BWCollectionView20BWCollectionViewItem 396 | get_field_types_BWCollectionViewItem 397 | _TMaGSQSi_ 398 | deinit 399 | _TMaC16BWCollectionView16BWCollectionView 400 | get_field_types_BWCollectionView 401 | _TMaGSQVSC7CGPoint_ 402 | _TMaVSC7CGPoint 403 | _TMaGSQV10Foundation4Date_ 404 | _TMaGSQCSo6SKNode_ 405 | _TMaGSQCSo22UIPanGestureRecognizer_ 406 | _TMaCSo22UIPanGestureRecognizer 407 | _TMaGSqCSo6SKView_ 408 | _TMaCSo6SKView 409 | _TMaGSQSd_ 410 | _TMaGSqP16BWCollectionView24BWCollectionViewDelegate__ 411 | _TMaP16BWCollectionView24BWCollectionViewDelegate_ 412 | _TMaGSqP16BWCollectionView26BWCollectionViewDataSource__ 413 | _TMaP16BWCollectionView26BWCollectionViewDataSource_ 414 | _TTSfq1n_cl39_TTRXFo_dGSRVs5UInt8___XFo_dGSRS___iT__XFo_dGSRVs5UInt8____n___TTSgq5T____TFVs12StaticString14withUTF8BufferurfFGSRVs5UInt8_xx 415 | _TFFs25_unimplementedInitializerFT9classNameVs12StaticString8initNameS_4fileS_4lineSu6columnSu_Os5NeverU0_FGSRVs5UInt8_T_ 416 | _TFFFs25_unimplementedInitializerFT9classNameVs12StaticString8initNameS_4fileS_4lineSu6columnSu_Os5NeverU0_FGSRVs5UInt8_T_U_FGSRS1__T_ 417 | _TTSfq4s_s___TFFFs25_unimplementedInitializerFT9classNameVs12StaticString8initNameS_4fileS_4lineSu6columnSu_Os5NeverU0_FGSRVs5UInt8_T_U_FGSRS1__T_ 418 | snap 419 | _TFFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D04snapFT2toSi_T_U_FCSo6SKNodeT_ 420 | _TTSf4g_g___TFFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D04snapFT2toSi_T_U_FCSo6SKNodeT_ 421 | totalDistance.set 422 | updateIndex 423 | _TTSg5GSaCSo6SKNode_GSaS__s8Sequences___TFEsPs8Sequence6filterfzFzWx8Iterator7Element_SbGSaWxS0_S1___ 424 | _TTSg5CSo6SKNode___TFVs15ContiguousArray6appendfxT_ 425 | _TTSg5CSo6SKNode___TFVs15ContiguousArray36_reserveCapacityAssumingUniqueBufferfT8oldCountSi_T_ 426 | _TTSg5GSaCSo6SKNode_GSaS__s10Collections___TFEsPs10Collectiong5firstGSqWx8Iterator7Element__ 427 | index.set 428 | index.didset 429 | delegate.get 430 | _TTSg5GSaCSo6SKNode_GSaS__s17MutableCollections___TFEsPs17MutableCollection6sortedfT2byFTWx8Iterator7Element_WxS0_S1___Sb_GSaWxS0_S1___ 431 | _TTSg5CSo6SKNode_GSaS__GSaS__s8Sequences___TFVs15ContiguousArrayCuRd__s8SequenceWd__8Iterator7Element_zxrfqd__GS_x_ 432 | _TTSg5CSo6SKNode___TTWurGSax_s8SequencesFS_22_copyToContiguousArrayfT_GVs15ContiguousArrayWx8Iterator7Element__ 433 | _TTSg5CSo6SKNode___TFSa22_copyToContiguousArrayfT_GVs15ContiguousArrayx_ 434 | _TTSg5CSo6SKNode_GVs15ContiguousArrayS__GS0_S__s8Sequences___TFSaCuRd__s8SequenceWd__8Iterator7Element_zxrfqd__GSax_ 435 | _TTSg5CSo6SKNode___TFVs12_ArrayBufferCfT7_bufferGVs22_ContiguousArrayBufferx_19shiftedToStartIndexSi_GS_x_ 436 | _TTSg5GVs15ContiguousArrayCSo6SKNode_GS_S0__s17MutableCollectionsGS_S0__s22RandomAccessCollections___TFesRxs17MutableCollectionxs22RandomAccessCollectionrS_4sortfT2byFTWxPs10Collection8Iterator7Element_WxS2_S3___Sb_T_ 437 | _TTSg5CSo6SKNode___TFVs12_ArrayBuffer19requestNativeBufferfT_GSqGVs22_ContiguousArrayBufferx__ 438 | _TTSg5CSo6SKNode___TFVs15ContiguousArray37_appendElementAssumeUniqueAndCapacityfTSi10newElementx_T_ 439 | _TTSg5CSo6SKNode___TFVs15ContiguousArray40_makeUniqueAndReserveCapacityIfNotUniquefT_T_ 440 | _TTSg5CSo6SKNode___TFVs22_ContiguousArrayBuffer30isMutableAndUniquelyReferencedfT_Sb 441 | _TTRXFo_oCSo6SKNode_dSbzoPs5Error__XFo_iS__dSbzoPS0___ 442 | _TFFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D011updateIndexFT_T_U_FCSo6SKNodeSb 443 | _TTSf4g___TFFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D011updateIndexFT_T_U_FCSo6SKNodeSb 444 | handlePan 445 | _TTSg5P____TFs27_allocateUninitializedArrayurFBwTGSax_Bp_ 446 | _TTSg5P____TZFSa13_adoptStoragefTGCs23_ContiguousArrayStoragex_5countSi_TGSax_GSpx__ 447 | _TTSg5P____TFVs22_ContiguousArrayBufferg19firstElementAddressGSpx_ 448 | _TTSg5P____TFVs22_ContiguousArrayBufferCfT5countSi7storageGCs23_ContiguousArrayStoragex__GS_x_ 449 | _TTSg5P____TFVs22_ContiguousArrayBuffer18_initStorageHeaderfT5countSi8capacitySi_T_ 450 | _TFFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D09handlePanFT_T_U_FCSo6SKNodeT_ 451 | _TTSf4g_g___TFFC16BWCollectionView16BWCollectionViewP33_DB0AA490047F3829280D7E6C7D4467D09handlePanFT_T_U_FCSo6SKNodeT_ 452 | skview.get 453 | panGestureRecognizer.get 454 | removeFromParent 455 | _TToFC16BWCollectionView16BWCollectionViews12dampingRatioSd 456 | dampingRatio.set 457 | _TToFC16BWCollectionView16BWCollectionViewg12dampingRatioSd 458 | spacing.set 459 | spacing.didset 460 | setSpacing 461 | _TTSg5GVs14CountableRangeSi_GS_Si_s14_IndexableBases___TFVs16IndexingIterator4nextfT_GSqwx8_Element_ 462 | _TTSg5SiSis10ComparablesSis11_Strideables___TTWuRxs10Comparablexs11_StrideablewxPS0_6Strides13SignedIntegerrGVs14CountableRangex_s14_IndexableBasesFS4_9formIndexfT5afterRwx5Index_T_ 463 | _TTSg5GVs14CountableRangeSi_GS_Si_s10_Indexables___TFEsPs10_Indexable9formIndexfT5afterRwx5Index_T_ 464 | _TTSg5SiSis10ComparablesSis11_Strideables___TTWuRxs10Comparablexs11_StrideablewxPS0_6Strides13SignedIntegerrGVs14CountableRangex_s14_IndexableBasesFS4_5indexfT5afterwx5Index_wxS5_ 465 | _TTSg5SiSis10ComparablesSis11_Strideables___TFVs14CountableRange5indexfT5afterx_x 466 | _TTWSis11_StrideablesFS_8advancedfT2bywx6Stride_x 467 | _TTSg5GVs14CountableRangeSi_GS_Si_s10_Indexables___TFEsPs10_Indexable20_failEarlyRangeCheckfTwx5Index6boundsGVs5RangewxS0___T_ 468 | spacing.get 469 | biggestItem.get 470 | _TTWSis35_ExpressibleByBuiltinIntegerLiteralsFS_CfT22_builtinIntegerLiteralBi2048__x 471 | _TTSg5CSo6SKNode___TFSag5countSi 472 | _TToFC16BWCollectionView16BWCollectionViews7spacingV12CoreGraphics7CGFloat 473 | _TToFC16BWCollectionView16BWCollectionViewg7spacingV12CoreGraphics7CGFloat 474 | _TToFC16BWCollectionView16BWCollectionViews5indexSi 475 | _TToFC16BWCollectionView16BWCollectionViewg5indexSi 476 | /Users/BWide/Library/Developer/Xcode/DerivedData/BWCollectionViewExample-ayqnscxveaedthbbomfzuwjriscr/Build/Intermediates/BWCollectionViewExample.build/Release-iphoneos/BWCollectionView.build/DerivedSources/BWCollectionView_vers.c 477 | -------------------------------------------------------------------------------- /Carthage/Build/iOS/BWCollectionView.framework.dSYM/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleIdentifier 8 | com.apple.xcode.dsym.com.BW.BWCollectionView 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundlePackageType 12 | dSYM 13 | CFBundleSignature 14 | ???? 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleVersion 18 | 1 19 | 20 | 21 | -------------------------------------------------------------------------------- /Carthage/Build/iOS/BWCollectionView.framework.dSYM/Contents/Resources/DWARF/BWCollectionView: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bwide/CollectionNode/c836ecafa7673645c99152b40fc87ff80aa8a150/Carthage/Build/iOS/BWCollectionView.framework.dSYM/Contents/Resources/DWARF/BWCollectionView -------------------------------------------------------------------------------- /Carthage/Build/iOS/BWCollectionView.framework/BWCollectionView: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bwide/CollectionNode/c836ecafa7673645c99152b40fc87ff80aa8a150/Carthage/Build/iOS/BWCollectionView.framework/BWCollectionView -------------------------------------------------------------------------------- /Carthage/Build/iOS/BWCollectionView.framework/Headers/BWCollectionView-Swift.h: -------------------------------------------------------------------------------- 1 | // Generated by Apple Swift version 3.1 (swiftlang-802.0.53 clang-802.0.42) 2 | #pragma clang diagnostic push 3 | 4 | #if defined(__has_include) && __has_include() 5 | # include 6 | #endif 7 | 8 | #pragma clang diagnostic ignored "-Wauto-import" 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | #if !defined(SWIFT_TYPEDEFS) 15 | # define SWIFT_TYPEDEFS 1 16 | # if defined(__has_include) && __has_include() 17 | # include 18 | # elif !defined(__cplusplus) || __cplusplus < 201103L 19 | typedef uint_least16_t char16_t; 20 | typedef uint_least32_t char32_t; 21 | # endif 22 | typedef float swift_float2 __attribute__((__ext_vector_type__(2))); 23 | typedef float swift_float3 __attribute__((__ext_vector_type__(3))); 24 | typedef float swift_float4 __attribute__((__ext_vector_type__(4))); 25 | typedef double swift_double2 __attribute__((__ext_vector_type__(2))); 26 | typedef double swift_double3 __attribute__((__ext_vector_type__(3))); 27 | typedef double swift_double4 __attribute__((__ext_vector_type__(4))); 28 | typedef int swift_int2 __attribute__((__ext_vector_type__(2))); 29 | typedef int swift_int3 __attribute__((__ext_vector_type__(3))); 30 | typedef int swift_int4 __attribute__((__ext_vector_type__(4))); 31 | typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); 32 | typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); 33 | typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); 34 | #endif 35 | 36 | #if !defined(SWIFT_PASTE) 37 | # define SWIFT_PASTE_HELPER(x, y) x##y 38 | # define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) 39 | #endif 40 | #if !defined(SWIFT_METATYPE) 41 | # define SWIFT_METATYPE(X) Class 42 | #endif 43 | #if !defined(SWIFT_CLASS_PROPERTY) 44 | # if __has_feature(objc_class_property) 45 | # define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ 46 | # else 47 | # define SWIFT_CLASS_PROPERTY(...) 48 | # endif 49 | #endif 50 | 51 | #if defined(__has_attribute) && __has_attribute(objc_runtime_name) 52 | # define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) 53 | #else 54 | # define SWIFT_RUNTIME_NAME(X) 55 | #endif 56 | #if defined(__has_attribute) && __has_attribute(swift_name) 57 | # define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) 58 | #else 59 | # define SWIFT_COMPILE_NAME(X) 60 | #endif 61 | #if defined(__has_attribute) && __has_attribute(objc_method_family) 62 | # define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) 63 | #else 64 | # define SWIFT_METHOD_FAMILY(X) 65 | #endif 66 | #if defined(__has_attribute) && __has_attribute(noescape) 67 | # define SWIFT_NOESCAPE __attribute__((noescape)) 68 | #else 69 | # define SWIFT_NOESCAPE 70 | #endif 71 | #if defined(__has_attribute) && __has_attribute(warn_unused_result) 72 | # define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) 73 | #else 74 | # define SWIFT_WARN_UNUSED_RESULT 75 | #endif 76 | #if !defined(SWIFT_CLASS_EXTRA) 77 | # define SWIFT_CLASS_EXTRA 78 | #endif 79 | #if !defined(SWIFT_PROTOCOL_EXTRA) 80 | # define SWIFT_PROTOCOL_EXTRA 81 | #endif 82 | #if !defined(SWIFT_ENUM_EXTRA) 83 | # define SWIFT_ENUM_EXTRA 84 | #endif 85 | #if !defined(SWIFT_CLASS) 86 | # if defined(__has_attribute) && __has_attribute(objc_subclassing_restricted) 87 | # define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA 88 | # define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA 89 | # else 90 | # define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA 91 | # define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA 92 | # endif 93 | #endif 94 | 95 | #if !defined(SWIFT_PROTOCOL) 96 | # define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA 97 | # define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA 98 | #endif 99 | 100 | #if !defined(SWIFT_EXTENSION) 101 | # define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) 102 | #endif 103 | 104 | #if !defined(OBJC_DESIGNATED_INITIALIZER) 105 | # if defined(__has_attribute) && __has_attribute(objc_designated_initializer) 106 | # define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) 107 | # else 108 | # define OBJC_DESIGNATED_INITIALIZER 109 | # endif 110 | #endif 111 | #if !defined(SWIFT_ENUM) 112 | # define SWIFT_ENUM(_type, _name) enum _name : _type _name; enum SWIFT_ENUM_EXTRA _name : _type 113 | # if defined(__has_feature) && __has_feature(generalized_swift_name) 114 | # define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_EXTRA _name : _type 115 | # else 116 | # define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) SWIFT_ENUM(_type, _name) 117 | # endif 118 | #endif 119 | #if !defined(SWIFT_UNAVAILABLE) 120 | # define SWIFT_UNAVAILABLE __attribute__((unavailable)) 121 | #endif 122 | #if !defined(SWIFT_UNAVAILABLE_MSG) 123 | # define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) 124 | #endif 125 | #if !defined(SWIFT_AVAILABILITY) 126 | # define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) 127 | #endif 128 | #if !defined(SWIFT_DEPRECATED) 129 | # define SWIFT_DEPRECATED __attribute__((deprecated)) 130 | #endif 131 | #if !defined(SWIFT_DEPRECATED_MSG) 132 | # define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) 133 | #endif 134 | #if defined(__has_feature) && __has_feature(modules) 135 | @import SpriteKit; 136 | @import CoreGraphics; 137 | @import Foundation; 138 | #endif 139 | 140 | #pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" 141 | #pragma clang diagnostic ignored "-Wduplicate-method-arg" 142 | @class SKView; 143 | @class NSCoder; 144 | 145 | SWIFT_CLASS("_TtC16BWCollectionView16BWCollectionView") 146 | @interface BWCollectionView : SKNode 147 | /// the current index of the CollectionView 148 | @property (nonatomic) NSInteger index; 149 | /// the spacing between elements of the CollectionView 150 | @property (nonatomic) CGFloat spacing; 151 | /// the damping ratio for the collectionView (0 to 1 meaning the percentage of speed to deaccelerate, default is 0.01) 152 | @property (nonatomic) double dampingRatio; 153 | /// the duration it takes to snap into a cell 154 | @property (nonatomic) double snapDuration; 155 | - (nonnull instancetype)initAt:(SKView * _Nonnull)view OBJC_DESIGNATED_INITIALIZER; 156 | - (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; 157 | /// extremely important to call this before leaving the scene 158 | - (void)removeFromParent; 159 | - (void)update:(NSTimeInterval)currentTime; 160 | - (void)snapTo:(NSInteger)index; 161 | - (nonnull instancetype)init SWIFT_UNAVAILABLE; 162 | @end 163 | 164 | 165 | SWIFT_CLASS("_TtC16BWCollectionView20BWCollectionViewItem") 166 | @interface BWCollectionViewItem : SKNode 167 | - (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; 168 | - (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; 169 | @end 170 | 171 | #pragma clang diagnostic pop 172 | -------------------------------------------------------------------------------- /Carthage/Build/iOS/BWCollectionView.framework/Headers/BWCollectionView.h: -------------------------------------------------------------------------------- 1 | // 2 | // BWCollectionView.h 3 | // BWCollectionView 4 | // 5 | // Created by Bruno Fulber Wide on 03/08/17. 6 | // Copyright © 2017 BW. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for BWCollectionView. 12 | FOUNDATION_EXPORT double BWCollectionViewVersionNumber; 13 | 14 | //! Project version string for BWCollectionView. 15 | FOUNDATION_EXPORT const unsigned char BWCollectionViewVersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | 20 | -------------------------------------------------------------------------------- /Carthage/Build/iOS/BWCollectionView.framework/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bwide/CollectionNode/c836ecafa7673645c99152b40fc87ff80aa8a150/Carthage/Build/iOS/BWCollectionView.framework/Info.plist -------------------------------------------------------------------------------- /Carthage/Build/iOS/BWCollectionView.framework/Modules/BWCollectionView.swiftmodule/arm.swiftdoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bwide/CollectionNode/c836ecafa7673645c99152b40fc87ff80aa8a150/Carthage/Build/iOS/BWCollectionView.framework/Modules/BWCollectionView.swiftmodule/arm.swiftdoc -------------------------------------------------------------------------------- /Carthage/Build/iOS/BWCollectionView.framework/Modules/BWCollectionView.swiftmodule/arm.swiftmodule: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bwide/CollectionNode/c836ecafa7673645c99152b40fc87ff80aa8a150/Carthage/Build/iOS/BWCollectionView.framework/Modules/BWCollectionView.swiftmodule/arm.swiftmodule -------------------------------------------------------------------------------- /Carthage/Build/iOS/BWCollectionView.framework/Modules/BWCollectionView.swiftmodule/arm64.swiftdoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bwide/CollectionNode/c836ecafa7673645c99152b40fc87ff80aa8a150/Carthage/Build/iOS/BWCollectionView.framework/Modules/BWCollectionView.swiftmodule/arm64.swiftdoc -------------------------------------------------------------------------------- /Carthage/Build/iOS/BWCollectionView.framework/Modules/BWCollectionView.swiftmodule/arm64.swiftmodule: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bwide/CollectionNode/c836ecafa7673645c99152b40fc87ff80aa8a150/Carthage/Build/iOS/BWCollectionView.framework/Modules/BWCollectionView.swiftmodule/arm64.swiftmodule -------------------------------------------------------------------------------- /Carthage/Build/iOS/BWCollectionView.framework/Modules/BWCollectionView.swiftmodule/i386.swiftdoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bwide/CollectionNode/c836ecafa7673645c99152b40fc87ff80aa8a150/Carthage/Build/iOS/BWCollectionView.framework/Modules/BWCollectionView.swiftmodule/i386.swiftdoc -------------------------------------------------------------------------------- /Carthage/Build/iOS/BWCollectionView.framework/Modules/BWCollectionView.swiftmodule/i386.swiftmodule: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bwide/CollectionNode/c836ecafa7673645c99152b40fc87ff80aa8a150/Carthage/Build/iOS/BWCollectionView.framework/Modules/BWCollectionView.swiftmodule/i386.swiftmodule -------------------------------------------------------------------------------- /Carthage/Build/iOS/BWCollectionView.framework/Modules/BWCollectionView.swiftmodule/x86_64.swiftdoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bwide/CollectionNode/c836ecafa7673645c99152b40fc87ff80aa8a150/Carthage/Build/iOS/BWCollectionView.framework/Modules/BWCollectionView.swiftmodule/x86_64.swiftdoc -------------------------------------------------------------------------------- /Carthage/Build/iOS/BWCollectionView.framework/Modules/BWCollectionView.swiftmodule/x86_64.swiftmodule: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bwide/CollectionNode/c836ecafa7673645c99152b40fc87ff80aa8a150/Carthage/Build/iOS/BWCollectionView.framework/Modules/BWCollectionView.swiftmodule/x86_64.swiftmodule -------------------------------------------------------------------------------- /Carthage/Build/iOS/BWCollectionView.framework/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module BWCollectionView { 2 | umbrella header "BWCollectionView.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | 8 | module BWCollectionView.Swift { 9 | header "BWCollectionView-Swift.h" 10 | } 11 | -------------------------------------------------------------------------------- /CollectionNode.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # Be sure to run `pod spec lint CollectionNode.podspec' to ensure this is a 3 | # valid spec and to remove all comments including this before submitting the spec. 4 | # 5 | # To learn more about Podspec attributes see http://docs.cocoapods.org/specification.html 6 | # To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/ 7 | # 8 | 9 | Pod::Spec.new do |s| 10 | 11 | # ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # 12 | # 13 | # These will help people to find your library, and whilst it 14 | # can feel like a chore to fill in it's definitely to your advantage. The 15 | # summary should be tweet-length, and the description more in depth. 16 | # 17 | 18 | s.name = "CollectionNode" 19 | s.version = "1.1.1" 20 | s.summary = "A CollectionView made for SpriteKit" 21 | 22 | # This description is used to generate tags and improve search results. 23 | # * Think: What does it do? Why did you write it? What is the focus? 24 | # * Try to keep it short, snappy and to the point. 25 | # * Write the description between the DESC delimiters below. 26 | # * Finally, don't worry about the indent, CocoaPods strips it! 27 | s.description = <<-DESC 28 | A simple to use CollectionView you can use as a SKNode in SpriteKit 29 | DESC 30 | 31 | s.homepage = 'https://github.com/bwide/CollectionNode' 32 | # s.screenshots = "https://github.com/bwide/CollectionNode/blob/master/iphonePreview.gif" 33 | 34 | 35 | # ――― Spec License ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # 36 | # 37 | # Licensing your code is important. See http://choosealicense.com for more info. 38 | # CocoaPods will detect a license file if there is a named LICENSE* 39 | # Popular ones are 'MIT', 'BSD' and 'Apache License, Version 2.0'. 40 | # 41 | 42 | s.license = "MIT" 43 | # s.license = { :type => "MIT", :file => "FILE_LICENSE" } 44 | 45 | 46 | # ――― Author Metadata ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # 47 | # 48 | # Specify the authors of the library, with email addresses. Email addresses 49 | # of the authors are extracted from the SCM log. E.g. $ git log. CocoaPods also 50 | # accepts just a name if you'd rather not provide an email address. 51 | # 52 | # Specify a social_media_url where others can refer to, for example a twitter 53 | # profile URL. 54 | # 55 | 56 | s.author = { "Bruno Fulber Wide" => "bfwide07@gmail.com" } 57 | # Or just: s.author = "Bruno Fulber Wide" 58 | # s.authors = { "Bruno Fulber Wide" => "bfwide07@gmail.com" } 59 | 60 | # ――― Platform Specifics ――――――――――――――――――――――――――――――――――――――――――――――――――――――― # 61 | # 62 | # If this Pod runs only on iOS or OS X, then specify the platform and 63 | # the deployment target. You can optionally include the target after the platform. 64 | # 65 | 66 | s.platform = :ios, "9.3" 67 | 68 | # ――― Source Location ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # 69 | # 70 | # Specify the location from where the source should be retrieved. 71 | # Supports git, hg, bzr, svn and HTTP. 72 | # 73 | 74 | s.source = { :git => "https://github.com/bwide/CollectionNode.git", :tag => s.version.to_s } 75 | 76 | 77 | # ――― Source Code ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # 78 | # 79 | # CocoaPods is smart about how it includes source code. For source files 80 | # giving a folder will include any swift, h, m, mm, c & cpp files. 81 | # For header files it will include any header in the folder. 82 | # Not including the public_header_files will make all headers public. 83 | # 84 | 85 | s.source_files = "Source/*.{swift}" 86 | s.exclude_files = "Classes/Exclude" 87 | 88 | # s.public_header_files = "Classes/**/*.h" 89 | 90 | end 91 | -------------------------------------------------------------------------------- /CollectionNode.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 48; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 224E5CE91F301EB0005CA1AE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 224E5CE81F301EB0005CA1AE /* AppDelegate.swift */; }; 11 | 224E5CEF1F301EB0005CA1AE /* GameScene.swift in Sources */ = {isa = PBXBuildFile; fileRef = 224E5CEE1F301EB0005CA1AE /* GameScene.swift */; }; 12 | 224E5CF11F301EB0005CA1AE /* GameViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 224E5CF01F301EB0005CA1AE /* GameViewController.swift */; }; 13 | 224E5CF41F301EB0005CA1AE /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 224E5CF21F301EB0005CA1AE /* Main.storyboard */; }; 14 | 224E5CF61F301EB0005CA1AE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 224E5CF51F301EB0005CA1AE /* Assets.xcassets */; }; 15 | 224E5CF91F301EB0005CA1AE /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 224E5CF71F301EB0005CA1AE /* LaunchScreen.storyboard */; }; 16 | 224E5D031F3020BB005CA1AE /* Emoji.swift in Sources */ = {isa = PBXBuildFile; fileRef = 224E5D021F3020BB005CA1AE /* Emoji.swift */; }; 17 | 225743E81F33C59A0098549B /* BWCollectionView.h in Headers */ = {isa = PBXBuildFile; fileRef = 225743E61F33C59A0098549B /* BWCollectionView.h */; settings = {ATTRIBUTES = (Public, ); }; }; 18 | 225743EB1F33C59A0098549B /* CollectionNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 225743E41F33C59A0098549B /* CollectionNode.framework */; }; 19 | 225743EC1F33C59A0098549B /* CollectionNode.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 225743E41F33C59A0098549B /* CollectionNode.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 20 | 2275AFA81F852FCE00F85503 /* CollectionNodeUnitTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2275AFA71F852FCE00F85503 /* CollectionNodeUnitTests.swift */; }; 21 | 227D88181F364B0A000FD7B1 /* EmojiModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 227D88171F364B0A000FD7B1 /* EmojiModel.swift */; }; 22 | 228AEFB81F8A924A006C9967 /* CollectionNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22B90E4E1F34031C00C75CE2 /* CollectionNode.swift */; }; 23 | 22B90E4F1F34031C00C75CE2 /* CollectionNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22B90E4E1F34031C00C75CE2 /* CollectionNode.swift */; }; 24 | 22B90E501F34031C00C75CE2 /* CollectionNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22B90E4E1F34031C00C75CE2 /* CollectionNode.swift */; }; 25 | 22D55DDF1F30224200B62B0F /* EmojiItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22D55DDE1F30224200B62B0F /* EmojiItem.swift */; }; 26 | 387167A92074271F00D4F4B8 /* CollectionNodeTv.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 387167A02074271E00D4F4B8 /* CollectionNodeTv.framework */; }; 27 | 387167AE2074271F00D4F4B8 /* CollectionNodeTvTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 387167AD2074271F00D4F4B8 /* CollectionNodeTvTests.swift */; }; 28 | 387167B02074271F00D4F4B8 /* CollectionNodeTv.h in Headers */ = {isa = PBXBuildFile; fileRef = 387167A22074271E00D4F4B8 /* CollectionNodeTv.h */; settings = {ATTRIBUTES = (Public, ); }; }; 29 | 387167B72074274900D4F4B8 /* CollectionNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22B90E4E1F34031C00C75CE2 /* CollectionNode.swift */; }; 30 | /* End PBXBuildFile section */ 31 | 32 | /* Begin PBXContainerItemProxy section */ 33 | 225743E91F33C59A0098549B /* PBXContainerItemProxy */ = { 34 | isa = PBXContainerItemProxy; 35 | containerPortal = 224E5CDD1F301EB0005CA1AE /* Project object */; 36 | proxyType = 1; 37 | remoteGlobalIDString = 225743E31F33C59A0098549B; 38 | remoteInfo = BWCollectionView; 39 | }; 40 | 2275AFAA1F852FCE00F85503 /* PBXContainerItemProxy */ = { 41 | isa = PBXContainerItemProxy; 42 | containerPortal = 224E5CDD1F301EB0005CA1AE /* Project object */; 43 | proxyType = 1; 44 | remoteGlobalIDString = 224E5CE41F301EB0005CA1AE; 45 | remoteInfo = BWCollectionViewExample; 46 | }; 47 | 387167AA2074271F00D4F4B8 /* PBXContainerItemProxy */ = { 48 | isa = PBXContainerItemProxy; 49 | containerPortal = 224E5CDD1F301EB0005CA1AE /* Project object */; 50 | proxyType = 1; 51 | remoteGlobalIDString = 3871679F2074271E00D4F4B8; 52 | remoteInfo = CollectionNodeTv; 53 | }; 54 | /* End PBXContainerItemProxy section */ 55 | 56 | /* Begin PBXCopyFilesBuildPhase section */ 57 | 225743F01F33C59A0098549B /* Embed Frameworks */ = { 58 | isa = PBXCopyFilesBuildPhase; 59 | buildActionMask = 2147483647; 60 | dstPath = ""; 61 | dstSubfolderSpec = 10; 62 | files = ( 63 | 225743EC1F33C59A0098549B /* CollectionNode.framework in Embed Frameworks */, 64 | ); 65 | name = "Embed Frameworks"; 66 | runOnlyForDeploymentPostprocessing = 0; 67 | }; 68 | /* End PBXCopyFilesBuildPhase section */ 69 | 70 | /* Begin PBXFileReference section */ 71 | 224E5CE51F301EB0005CA1AE /* CollectionNodeExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CollectionNodeExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 72 | 224E5CE81F301EB0005CA1AE /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 73 | 224E5CEE1F301EB0005CA1AE /* GameScene.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameScene.swift; sourceTree = ""; }; 74 | 224E5CF01F301EB0005CA1AE /* GameViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameViewController.swift; sourceTree = ""; }; 75 | 224E5CF31F301EB0005CA1AE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 76 | 224E5CF51F301EB0005CA1AE /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 77 | 224E5CF81F301EB0005CA1AE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 78 | 224E5CFA1F301EB0005CA1AE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 79 | 224E5D021F3020BB005CA1AE /* Emoji.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Emoji.swift; sourceTree = ""; }; 80 | 225743E41F33C59A0098549B /* CollectionNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CollectionNode.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 81 | 225743E61F33C59A0098549B /* BWCollectionView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BWCollectionView.h; sourceTree = ""; }; 82 | 225743E71F33C59A0098549B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 83 | 2275AFA51F852FCE00F85503 /* CollectionNodeUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CollectionNodeUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 84 | 2275AFA71F852FCE00F85503 /* CollectionNodeUnitTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CollectionNodeUnitTests.swift; sourceTree = ""; }; 85 | 2275AFA91F852FCE00F85503 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 86 | 227D88171F364B0A000FD7B1 /* EmojiModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EmojiModel.swift; sourceTree = ""; }; 87 | 22B90E4E1F34031C00C75CE2 /* CollectionNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionNode.swift; sourceTree = ""; }; 88 | 22D55DDE1F30224200B62B0F /* EmojiItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiItem.swift; sourceTree = ""; }; 89 | 387167A02074271E00D4F4B8 /* CollectionNodeTv.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CollectionNodeTv.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 90 | 387167A22074271E00D4F4B8 /* CollectionNodeTv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CollectionNodeTv.h; sourceTree = ""; }; 91 | 387167A32074271E00D4F4B8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 92 | 387167A82074271F00D4F4B8 /* CollectionNodeTvTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CollectionNodeTvTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 93 | 387167AD2074271F00D4F4B8 /* CollectionNodeTvTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CollectionNodeTvTests.swift; sourceTree = ""; }; 94 | 387167AF2074271F00D4F4B8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 95 | /* End PBXFileReference section */ 96 | 97 | /* Begin PBXFrameworksBuildPhase section */ 98 | 224E5CE21F301EB0005CA1AE /* Frameworks */ = { 99 | isa = PBXFrameworksBuildPhase; 100 | buildActionMask = 2147483647; 101 | files = ( 102 | 225743EB1F33C59A0098549B /* CollectionNode.framework in Frameworks */, 103 | ); 104 | runOnlyForDeploymentPostprocessing = 0; 105 | }; 106 | 225743E01F33C59A0098549B /* Frameworks */ = { 107 | isa = PBXFrameworksBuildPhase; 108 | buildActionMask = 2147483647; 109 | files = ( 110 | ); 111 | runOnlyForDeploymentPostprocessing = 0; 112 | }; 113 | 2275AFA21F852FCE00F85503 /* Frameworks */ = { 114 | isa = PBXFrameworksBuildPhase; 115 | buildActionMask = 2147483647; 116 | files = ( 117 | ); 118 | runOnlyForDeploymentPostprocessing = 0; 119 | }; 120 | 3871679C2074271E00D4F4B8 /* Frameworks */ = { 121 | isa = PBXFrameworksBuildPhase; 122 | buildActionMask = 2147483647; 123 | files = ( 124 | ); 125 | runOnlyForDeploymentPostprocessing = 0; 126 | }; 127 | 387167A52074271F00D4F4B8 /* Frameworks */ = { 128 | isa = PBXFrameworksBuildPhase; 129 | buildActionMask = 2147483647; 130 | files = ( 131 | 387167A92074271F00D4F4B8 /* CollectionNodeTv.framework in Frameworks */, 132 | ); 133 | runOnlyForDeploymentPostprocessing = 0; 134 | }; 135 | /* End PBXFrameworksBuildPhase section */ 136 | 137 | /* Begin PBXGroup section */ 138 | 224E5CDC1F301EB0005CA1AE = { 139 | isa = PBXGroup; 140 | children = ( 141 | 22E94BE61F8A934A0040DFC6 /* Source */, 142 | 224E5CE71F301EB0005CA1AE /* CollectionNodeExample */, 143 | 225743E51F33C59A0098549B /* CollectionNode */, 144 | 2275AFA61F852FCE00F85503 /* CollectionNodeUnitTests */, 145 | 387167A12074271E00D4F4B8 /* CollectionNodeTv */, 146 | 387167AC2074271F00D4F4B8 /* CollectionNodeTvTests */, 147 | 224E5CE61F301EB0005CA1AE /* Products */, 148 | ); 149 | sourceTree = ""; 150 | }; 151 | 224E5CE61F301EB0005CA1AE /* Products */ = { 152 | isa = PBXGroup; 153 | children = ( 154 | 224E5CE51F301EB0005CA1AE /* CollectionNodeExample.app */, 155 | 225743E41F33C59A0098549B /* CollectionNode.framework */, 156 | 2275AFA51F852FCE00F85503 /* CollectionNodeUnitTests.xctest */, 157 | 387167A02074271E00D4F4B8 /* CollectionNodeTv.framework */, 158 | 387167A82074271F00D4F4B8 /* CollectionNodeTvTests.xctest */, 159 | ); 160 | name = Products; 161 | sourceTree = ""; 162 | }; 163 | 224E5CE71F301EB0005CA1AE /* CollectionNodeExample */ = { 164 | isa = PBXGroup; 165 | children = ( 166 | 224E5D041F3021FC005CA1AE /* Support */, 167 | 224E5CEE1F301EB0005CA1AE /* GameScene.swift */, 168 | 227D88171F364B0A000FD7B1 /* EmojiModel.swift */, 169 | 224E5D021F3020BB005CA1AE /* Emoji.swift */, 170 | 22D55DDE1F30224200B62B0F /* EmojiItem.swift */, 171 | 224E5CFA1F301EB0005CA1AE /* Info.plist */, 172 | ); 173 | path = CollectionNodeExample; 174 | sourceTree = ""; 175 | }; 176 | 224E5D041F3021FC005CA1AE /* Support */ = { 177 | isa = PBXGroup; 178 | children = ( 179 | 224E5CF01F301EB0005CA1AE /* GameViewController.swift */, 180 | 224E5CE81F301EB0005CA1AE /* AppDelegate.swift */, 181 | 224E5CF21F301EB0005CA1AE /* Main.storyboard */, 182 | 224E5CF51F301EB0005CA1AE /* Assets.xcassets */, 183 | 224E5CF71F301EB0005CA1AE /* LaunchScreen.storyboard */, 184 | ); 185 | path = Support; 186 | sourceTree = ""; 187 | }; 188 | 225743E51F33C59A0098549B /* CollectionNode */ = { 189 | isa = PBXGroup; 190 | children = ( 191 | 225743E61F33C59A0098549B /* BWCollectionView.h */, 192 | 225743E71F33C59A0098549B /* Info.plist */, 193 | ); 194 | path = CollectionNode; 195 | sourceTree = ""; 196 | }; 197 | 2275AFA61F852FCE00F85503 /* CollectionNodeUnitTests */ = { 198 | isa = PBXGroup; 199 | children = ( 200 | 2275AFA71F852FCE00F85503 /* CollectionNodeUnitTests.swift */, 201 | 2275AFA91F852FCE00F85503 /* Info.plist */, 202 | ); 203 | path = CollectionNodeUnitTests; 204 | sourceTree = ""; 205 | }; 206 | 22E94BE61F8A934A0040DFC6 /* Source */ = { 207 | isa = PBXGroup; 208 | children = ( 209 | 22B90E4E1F34031C00C75CE2 /* CollectionNode.swift */, 210 | ); 211 | path = Source; 212 | sourceTree = ""; 213 | }; 214 | 387167A12074271E00D4F4B8 /* CollectionNodeTv */ = { 215 | isa = PBXGroup; 216 | children = ( 217 | 387167A22074271E00D4F4B8 /* CollectionNodeTv.h */, 218 | 387167A32074271E00D4F4B8 /* Info.plist */, 219 | ); 220 | path = CollectionNodeTv; 221 | sourceTree = ""; 222 | }; 223 | 387167AC2074271F00D4F4B8 /* CollectionNodeTvTests */ = { 224 | isa = PBXGroup; 225 | children = ( 226 | 387167AD2074271F00D4F4B8 /* CollectionNodeTvTests.swift */, 227 | 387167AF2074271F00D4F4B8 /* Info.plist */, 228 | ); 229 | path = CollectionNodeTvTests; 230 | sourceTree = ""; 231 | }; 232 | /* End PBXGroup section */ 233 | 234 | /* Begin PBXHeadersBuildPhase section */ 235 | 225743E11F33C59A0098549B /* Headers */ = { 236 | isa = PBXHeadersBuildPhase; 237 | buildActionMask = 2147483647; 238 | files = ( 239 | 225743E81F33C59A0098549B /* BWCollectionView.h in Headers */, 240 | ); 241 | runOnlyForDeploymentPostprocessing = 0; 242 | }; 243 | 3871679D2074271E00D4F4B8 /* Headers */ = { 244 | isa = PBXHeadersBuildPhase; 245 | buildActionMask = 2147483647; 246 | files = ( 247 | 387167B02074271F00D4F4B8 /* CollectionNodeTv.h in Headers */, 248 | ); 249 | runOnlyForDeploymentPostprocessing = 0; 250 | }; 251 | /* End PBXHeadersBuildPhase section */ 252 | 253 | /* Begin PBXNativeTarget section */ 254 | 224E5CE41F301EB0005CA1AE /* CollectionNodeExample */ = { 255 | isa = PBXNativeTarget; 256 | buildConfigurationList = 224E5CFD1F301EB0005CA1AE /* Build configuration list for PBXNativeTarget "CollectionNodeExample" */; 257 | buildPhases = ( 258 | 224E5CE11F301EB0005CA1AE /* Sources */, 259 | 224E5CE21F301EB0005CA1AE /* Frameworks */, 260 | 224E5CE31F301EB0005CA1AE /* Resources */, 261 | 225743F01F33C59A0098549B /* Embed Frameworks */, 262 | ); 263 | buildRules = ( 264 | ); 265 | dependencies = ( 266 | 225743EA1F33C59A0098549B /* PBXTargetDependency */, 267 | ); 268 | name = CollectionNodeExample; 269 | productName = SKCollectionViewExample; 270 | productReference = 224E5CE51F301EB0005CA1AE /* CollectionNodeExample.app */; 271 | productType = "com.apple.product-type.application"; 272 | }; 273 | 225743E31F33C59A0098549B /* CollectionNode */ = { 274 | isa = PBXNativeTarget; 275 | buildConfigurationList = 225743ED1F33C59A0098549B /* Build configuration list for PBXNativeTarget "CollectionNode" */; 276 | buildPhases = ( 277 | 225743DF1F33C59A0098549B /* Sources */, 278 | 225743E01F33C59A0098549B /* Frameworks */, 279 | 225743E11F33C59A0098549B /* Headers */, 280 | 225743E21F33C59A0098549B /* Resources */, 281 | ); 282 | buildRules = ( 283 | ); 284 | dependencies = ( 285 | ); 286 | name = CollectionNode; 287 | productName = BWCollectionView; 288 | productReference = 225743E41F33C59A0098549B /* CollectionNode.framework */; 289 | productType = "com.apple.product-type.framework"; 290 | }; 291 | 2275AFA41F852FCE00F85503 /* CollectionNodeUnitTests */ = { 292 | isa = PBXNativeTarget; 293 | buildConfigurationList = 2275AFAE1F852FCE00F85503 /* Build configuration list for PBXNativeTarget "CollectionNodeUnitTests" */; 294 | buildPhases = ( 295 | 2275AFA11F852FCE00F85503 /* Sources */, 296 | 2275AFA21F852FCE00F85503 /* Frameworks */, 297 | 2275AFA31F852FCE00F85503 /* Resources */, 298 | ); 299 | buildRules = ( 300 | ); 301 | dependencies = ( 302 | 2275AFAB1F852FCE00F85503 /* PBXTargetDependency */, 303 | ); 304 | name = CollectionNodeUnitTests; 305 | productName = CollectionNodeUnitTests; 306 | productReference = 2275AFA51F852FCE00F85503 /* CollectionNodeUnitTests.xctest */; 307 | productType = "com.apple.product-type.bundle.unit-test"; 308 | }; 309 | 3871679F2074271E00D4F4B8 /* CollectionNodeTv */ = { 310 | isa = PBXNativeTarget; 311 | buildConfigurationList = 387167B52074271F00D4F4B8 /* Build configuration list for PBXNativeTarget "CollectionNodeTv" */; 312 | buildPhases = ( 313 | 3871679B2074271E00D4F4B8 /* Sources */, 314 | 3871679C2074271E00D4F4B8 /* Frameworks */, 315 | 3871679D2074271E00D4F4B8 /* Headers */, 316 | 3871679E2074271E00D4F4B8 /* Resources */, 317 | ); 318 | buildRules = ( 319 | ); 320 | dependencies = ( 321 | ); 322 | name = CollectionNodeTv; 323 | productName = CollectionNodeTv; 324 | productReference = 387167A02074271E00D4F4B8 /* CollectionNodeTv.framework */; 325 | productType = "com.apple.product-type.framework"; 326 | }; 327 | 387167A72074271F00D4F4B8 /* CollectionNodeTvTests */ = { 328 | isa = PBXNativeTarget; 329 | buildConfigurationList = 387167B62074271F00D4F4B8 /* Build configuration list for PBXNativeTarget "CollectionNodeTvTests" */; 330 | buildPhases = ( 331 | 387167A42074271F00D4F4B8 /* Sources */, 332 | 387167A52074271F00D4F4B8 /* Frameworks */, 333 | 387167A62074271F00D4F4B8 /* Resources */, 334 | ); 335 | buildRules = ( 336 | ); 337 | dependencies = ( 338 | 387167AB2074271F00D4F4B8 /* PBXTargetDependency */, 339 | ); 340 | name = CollectionNodeTvTests; 341 | productName = CollectionNodeTvTests; 342 | productReference = 387167A82074271F00D4F4B8 /* CollectionNodeTvTests.xctest */; 343 | productType = "com.apple.product-type.bundle.unit-test"; 344 | }; 345 | /* End PBXNativeTarget section */ 346 | 347 | /* Begin PBXProject section */ 348 | 224E5CDD1F301EB0005CA1AE /* Project object */ = { 349 | isa = PBXProject; 350 | attributes = { 351 | LastSwiftUpdateCheck = 0930; 352 | LastUpgradeCheck = 0900; 353 | ORGANIZATIONNAME = BW; 354 | TargetAttributes = { 355 | 224E5CE41F301EB0005CA1AE = { 356 | CreatedOnToolsVersion = 9.0; 357 | LastSwiftMigration = 0900; 358 | }; 359 | 225743E31F33C59A0098549B = { 360 | CreatedOnToolsVersion = 9.0; 361 | LastSwiftMigration = 0900; 362 | }; 363 | 2275AFA41F852FCE00F85503 = { 364 | CreatedOnToolsVersion = 9.0; 365 | ProvisioningStyle = Automatic; 366 | TestTargetID = 224E5CE41F301EB0005CA1AE; 367 | }; 368 | 3871679F2074271E00D4F4B8 = { 369 | CreatedOnToolsVersion = 9.3; 370 | ProvisioningStyle = Automatic; 371 | }; 372 | 387167A72074271F00D4F4B8 = { 373 | CreatedOnToolsVersion = 9.3; 374 | ProvisioningStyle = Automatic; 375 | }; 376 | }; 377 | }; 378 | buildConfigurationList = 224E5CE01F301EB0005CA1AE /* Build configuration list for PBXProject "CollectionNode" */; 379 | compatibilityVersion = "Xcode 8.0"; 380 | developmentRegion = en; 381 | hasScannedForEncodings = 0; 382 | knownRegions = ( 383 | en, 384 | Base, 385 | ); 386 | mainGroup = 224E5CDC1F301EB0005CA1AE; 387 | productRefGroup = 224E5CE61F301EB0005CA1AE /* Products */; 388 | projectDirPath = ""; 389 | projectRoot = ""; 390 | targets = ( 391 | 224E5CE41F301EB0005CA1AE /* CollectionNodeExample */, 392 | 225743E31F33C59A0098549B /* CollectionNode */, 393 | 2275AFA41F852FCE00F85503 /* CollectionNodeUnitTests */, 394 | 3871679F2074271E00D4F4B8 /* CollectionNodeTv */, 395 | 387167A72074271F00D4F4B8 /* CollectionNodeTvTests */, 396 | ); 397 | }; 398 | /* End PBXProject section */ 399 | 400 | /* Begin PBXResourcesBuildPhase section */ 401 | 224E5CE31F301EB0005CA1AE /* Resources */ = { 402 | isa = PBXResourcesBuildPhase; 403 | buildActionMask = 2147483647; 404 | files = ( 405 | 224E5CF41F301EB0005CA1AE /* Main.storyboard in Resources */, 406 | 224E5CF61F301EB0005CA1AE /* Assets.xcassets in Resources */, 407 | 224E5CF91F301EB0005CA1AE /* LaunchScreen.storyboard in Resources */, 408 | ); 409 | runOnlyForDeploymentPostprocessing = 0; 410 | }; 411 | 225743E21F33C59A0098549B /* Resources */ = { 412 | isa = PBXResourcesBuildPhase; 413 | buildActionMask = 2147483647; 414 | files = ( 415 | ); 416 | runOnlyForDeploymentPostprocessing = 0; 417 | }; 418 | 2275AFA31F852FCE00F85503 /* Resources */ = { 419 | isa = PBXResourcesBuildPhase; 420 | buildActionMask = 2147483647; 421 | files = ( 422 | ); 423 | runOnlyForDeploymentPostprocessing = 0; 424 | }; 425 | 3871679E2074271E00D4F4B8 /* Resources */ = { 426 | isa = PBXResourcesBuildPhase; 427 | buildActionMask = 2147483647; 428 | files = ( 429 | ); 430 | runOnlyForDeploymentPostprocessing = 0; 431 | }; 432 | 387167A62074271F00D4F4B8 /* Resources */ = { 433 | isa = PBXResourcesBuildPhase; 434 | buildActionMask = 2147483647; 435 | files = ( 436 | ); 437 | runOnlyForDeploymentPostprocessing = 0; 438 | }; 439 | /* End PBXResourcesBuildPhase section */ 440 | 441 | /* Begin PBXSourcesBuildPhase section */ 442 | 224E5CE11F301EB0005CA1AE /* Sources */ = { 443 | isa = PBXSourcesBuildPhase; 444 | buildActionMask = 2147483647; 445 | files = ( 446 | 227D88181F364B0A000FD7B1 /* EmojiModel.swift in Sources */, 447 | 224E5D031F3020BB005CA1AE /* Emoji.swift in Sources */, 448 | 224E5CEF1F301EB0005CA1AE /* GameScene.swift in Sources */, 449 | 224E5CF11F301EB0005CA1AE /* GameViewController.swift in Sources */, 450 | 22B90E4F1F34031C00C75CE2 /* CollectionNode.swift in Sources */, 451 | 224E5CE91F301EB0005CA1AE /* AppDelegate.swift in Sources */, 452 | 22D55DDF1F30224200B62B0F /* EmojiItem.swift in Sources */, 453 | ); 454 | runOnlyForDeploymentPostprocessing = 0; 455 | }; 456 | 225743DF1F33C59A0098549B /* Sources */ = { 457 | isa = PBXSourcesBuildPhase; 458 | buildActionMask = 2147483647; 459 | files = ( 460 | 22B90E501F34031C00C75CE2 /* CollectionNode.swift in Sources */, 461 | ); 462 | runOnlyForDeploymentPostprocessing = 0; 463 | }; 464 | 2275AFA11F852FCE00F85503 /* Sources */ = { 465 | isa = PBXSourcesBuildPhase; 466 | buildActionMask = 2147483647; 467 | files = ( 468 | 2275AFA81F852FCE00F85503 /* CollectionNodeUnitTests.swift in Sources */, 469 | 228AEFB81F8A924A006C9967 /* CollectionNode.swift in Sources */, 470 | ); 471 | runOnlyForDeploymentPostprocessing = 0; 472 | }; 473 | 3871679B2074271E00D4F4B8 /* Sources */ = { 474 | isa = PBXSourcesBuildPhase; 475 | buildActionMask = 2147483647; 476 | files = ( 477 | 387167B72074274900D4F4B8 /* CollectionNode.swift in Sources */, 478 | ); 479 | runOnlyForDeploymentPostprocessing = 0; 480 | }; 481 | 387167A42074271F00D4F4B8 /* Sources */ = { 482 | isa = PBXSourcesBuildPhase; 483 | buildActionMask = 2147483647; 484 | files = ( 485 | 387167AE2074271F00D4F4B8 /* CollectionNodeTvTests.swift in Sources */, 486 | ); 487 | runOnlyForDeploymentPostprocessing = 0; 488 | }; 489 | /* End PBXSourcesBuildPhase section */ 490 | 491 | /* Begin PBXTargetDependency section */ 492 | 225743EA1F33C59A0098549B /* PBXTargetDependency */ = { 493 | isa = PBXTargetDependency; 494 | target = 225743E31F33C59A0098549B /* CollectionNode */; 495 | targetProxy = 225743E91F33C59A0098549B /* PBXContainerItemProxy */; 496 | }; 497 | 2275AFAB1F852FCE00F85503 /* PBXTargetDependency */ = { 498 | isa = PBXTargetDependency; 499 | target = 224E5CE41F301EB0005CA1AE /* CollectionNodeExample */; 500 | targetProxy = 2275AFAA1F852FCE00F85503 /* PBXContainerItemProxy */; 501 | }; 502 | 387167AB2074271F00D4F4B8 /* PBXTargetDependency */ = { 503 | isa = PBXTargetDependency; 504 | target = 3871679F2074271E00D4F4B8 /* CollectionNodeTv */; 505 | targetProxy = 387167AA2074271F00D4F4B8 /* PBXContainerItemProxy */; 506 | }; 507 | /* End PBXTargetDependency section */ 508 | 509 | /* Begin PBXVariantGroup section */ 510 | 224E5CF21F301EB0005CA1AE /* Main.storyboard */ = { 511 | isa = PBXVariantGroup; 512 | children = ( 513 | 224E5CF31F301EB0005CA1AE /* Base */, 514 | ); 515 | name = Main.storyboard; 516 | sourceTree = ""; 517 | }; 518 | 224E5CF71F301EB0005CA1AE /* LaunchScreen.storyboard */ = { 519 | isa = PBXVariantGroup; 520 | children = ( 521 | 224E5CF81F301EB0005CA1AE /* Base */, 522 | ); 523 | name = LaunchScreen.storyboard; 524 | path = ..; 525 | sourceTree = ""; 526 | }; 527 | /* End PBXVariantGroup section */ 528 | 529 | /* Begin XCBuildConfiguration section */ 530 | 224E5CFB1F301EB0005CA1AE /* Debug */ = { 531 | isa = XCBuildConfiguration; 532 | buildSettings = { 533 | ALWAYS_SEARCH_USER_PATHS = NO; 534 | CLANG_ANALYZER_NONNULL = YES; 535 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 536 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 537 | CLANG_CXX_LIBRARY = "libc++"; 538 | CLANG_ENABLE_MODULES = YES; 539 | CLANG_ENABLE_OBJC_ARC = YES; 540 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 541 | CLANG_WARN_BOOL_CONVERSION = YES; 542 | CLANG_WARN_COMMA = YES; 543 | CLANG_WARN_CONSTANT_CONVERSION = YES; 544 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 545 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 546 | CLANG_WARN_EMPTY_BODY = YES; 547 | CLANG_WARN_ENUM_CONVERSION = YES; 548 | CLANG_WARN_INFINITE_RECURSION = YES; 549 | CLANG_WARN_INT_CONVERSION = YES; 550 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 551 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 552 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 553 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 554 | CLANG_WARN_STRICT_PROTOTYPES = YES; 555 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 556 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 557 | CLANG_WARN_UNREACHABLE_CODE = YES; 558 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 559 | CODE_SIGN_IDENTITY = "iPhone Developer"; 560 | COPY_PHASE_STRIP = NO; 561 | DEBUG_INFORMATION_FORMAT = dwarf; 562 | ENABLE_STRICT_OBJC_MSGSEND = YES; 563 | ENABLE_TESTABILITY = YES; 564 | GCC_C_LANGUAGE_STANDARD = gnu11; 565 | GCC_DYNAMIC_NO_PIC = NO; 566 | GCC_NO_COMMON_BLOCKS = YES; 567 | GCC_OPTIMIZATION_LEVEL = 0; 568 | GCC_PREPROCESSOR_DEFINITIONS = ( 569 | "DEBUG=1", 570 | "$(inherited)", 571 | ); 572 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 573 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 574 | GCC_WARN_UNDECLARED_SELECTOR = YES; 575 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 576 | GCC_WARN_UNUSED_FUNCTION = YES; 577 | GCC_WARN_UNUSED_VARIABLE = YES; 578 | IPHONEOS_DEPLOYMENT_TARGET = 10.3; 579 | MTL_ENABLE_DEBUG_INFO = YES; 580 | ONLY_ACTIVE_ARCH = YES; 581 | SDKROOT = iphoneos; 582 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 583 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 584 | }; 585 | name = Debug; 586 | }; 587 | 224E5CFC1F301EB0005CA1AE /* Release */ = { 588 | isa = XCBuildConfiguration; 589 | buildSettings = { 590 | ALWAYS_SEARCH_USER_PATHS = NO; 591 | CLANG_ANALYZER_NONNULL = YES; 592 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 593 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 594 | CLANG_CXX_LIBRARY = "libc++"; 595 | CLANG_ENABLE_MODULES = YES; 596 | CLANG_ENABLE_OBJC_ARC = YES; 597 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 598 | CLANG_WARN_BOOL_CONVERSION = YES; 599 | CLANG_WARN_COMMA = YES; 600 | CLANG_WARN_CONSTANT_CONVERSION = YES; 601 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 602 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 603 | CLANG_WARN_EMPTY_BODY = YES; 604 | CLANG_WARN_ENUM_CONVERSION = YES; 605 | CLANG_WARN_INFINITE_RECURSION = YES; 606 | CLANG_WARN_INT_CONVERSION = YES; 607 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 608 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 609 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 610 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 611 | CLANG_WARN_STRICT_PROTOTYPES = YES; 612 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 613 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 614 | CLANG_WARN_UNREACHABLE_CODE = YES; 615 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 616 | CODE_SIGN_IDENTITY = "iPhone Developer"; 617 | COPY_PHASE_STRIP = NO; 618 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 619 | ENABLE_NS_ASSERTIONS = NO; 620 | ENABLE_STRICT_OBJC_MSGSEND = YES; 621 | GCC_C_LANGUAGE_STANDARD = gnu11; 622 | GCC_NO_COMMON_BLOCKS = YES; 623 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 624 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 625 | GCC_WARN_UNDECLARED_SELECTOR = YES; 626 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 627 | GCC_WARN_UNUSED_FUNCTION = YES; 628 | GCC_WARN_UNUSED_VARIABLE = YES; 629 | IPHONEOS_DEPLOYMENT_TARGET = 10.3; 630 | MTL_ENABLE_DEBUG_INFO = NO; 631 | SDKROOT = iphoneos; 632 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 633 | VALIDATE_PRODUCT = YES; 634 | }; 635 | name = Release; 636 | }; 637 | 224E5CFE1F301EB0005CA1AE /* Debug */ = { 638 | isa = XCBuildConfiguration; 639 | buildSettings = { 640 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 641 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 642 | DEVELOPMENT_TEAM = D9KU92KK65; 643 | INFOPLIST_FILE = "$(SRCROOT)/CollectionNodeExample/Info.plist"; 644 | IPHONEOS_DEPLOYMENT_TARGET = 10.3; 645 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 646 | PRODUCT_BUNDLE_IDENTIFIER = com.BW.BWCollectionViewExample; 647 | PRODUCT_NAME = "$(TARGET_NAME)"; 648 | SWIFT_SWIFT3_OBJC_INFERENCE = On; 649 | SWIFT_VERSION = 4.0; 650 | TARGETED_DEVICE_FAMILY = "1,2"; 651 | }; 652 | name = Debug; 653 | }; 654 | 224E5CFF1F301EB0005CA1AE /* Release */ = { 655 | isa = XCBuildConfiguration; 656 | buildSettings = { 657 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 658 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 659 | DEVELOPMENT_TEAM = D9KU92KK65; 660 | INFOPLIST_FILE = "$(SRCROOT)/CollectionNodeExample/Info.plist"; 661 | IPHONEOS_DEPLOYMENT_TARGET = 10.3; 662 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 663 | PRODUCT_BUNDLE_IDENTIFIER = com.BW.BWCollectionViewExample; 664 | PRODUCT_NAME = "$(TARGET_NAME)"; 665 | SWIFT_SWIFT3_OBJC_INFERENCE = On; 666 | SWIFT_VERSION = 4.0; 667 | TARGETED_DEVICE_FAMILY = "1,2"; 668 | }; 669 | name = Release; 670 | }; 671 | 225743EE1F33C59A0098549B /* Debug */ = { 672 | isa = XCBuildConfiguration; 673 | buildSettings = { 674 | CLANG_ENABLE_MODULES = YES; 675 | CODE_SIGN_IDENTITY = ""; 676 | CURRENT_PROJECT_VERSION = 1; 677 | DEFINES_MODULE = YES; 678 | DEVELOPMENT_TEAM = D9KU92KK65; 679 | DYLIB_COMPATIBILITY_VERSION = 1; 680 | DYLIB_CURRENT_VERSION = 1; 681 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 682 | INFOPLIST_FILE = CollectionNode/Info.plist; 683 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 684 | IPHONEOS_DEPLOYMENT_TARGET = 10.3; 685 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 686 | PRODUCT_BUNDLE_IDENTIFIER = com.BW.BWCollectionView; 687 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 688 | SKIP_INSTALL = YES; 689 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 690 | SWIFT_SWIFT3_OBJC_INFERENCE = On; 691 | SWIFT_VERSION = 4.0; 692 | TARGETED_DEVICE_FAMILY = "1,2"; 693 | VERSIONING_SYSTEM = "apple-generic"; 694 | VERSION_INFO_PREFIX = ""; 695 | }; 696 | name = Debug; 697 | }; 698 | 225743EF1F33C59A0098549B /* Release */ = { 699 | isa = XCBuildConfiguration; 700 | buildSettings = { 701 | CLANG_ENABLE_MODULES = YES; 702 | CODE_SIGN_IDENTITY = ""; 703 | CURRENT_PROJECT_VERSION = 1; 704 | DEFINES_MODULE = YES; 705 | DEVELOPMENT_TEAM = D9KU92KK65; 706 | DYLIB_COMPATIBILITY_VERSION = 1; 707 | DYLIB_CURRENT_VERSION = 1; 708 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 709 | INFOPLIST_FILE = CollectionNode/Info.plist; 710 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 711 | IPHONEOS_DEPLOYMENT_TARGET = 10.3; 712 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 713 | PRODUCT_BUNDLE_IDENTIFIER = com.BW.BWCollectionView; 714 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 715 | SKIP_INSTALL = YES; 716 | SWIFT_SWIFT3_OBJC_INFERENCE = On; 717 | SWIFT_VERSION = 4.0; 718 | TARGETED_DEVICE_FAMILY = "1,2"; 719 | VERSIONING_SYSTEM = "apple-generic"; 720 | VERSION_INFO_PREFIX = ""; 721 | }; 722 | name = Release; 723 | }; 724 | 2275AFAC1F852FCE00F85503 /* Debug */ = { 725 | isa = XCBuildConfiguration; 726 | buildSettings = { 727 | BUNDLE_LOADER = "$(TEST_HOST)"; 728 | CODE_SIGN_STYLE = Automatic; 729 | DEVELOPMENT_TEAM = D9KU92KK65; 730 | INFOPLIST_FILE = CollectionNodeUnitTests/Info.plist; 731 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 732 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 733 | PRODUCT_BUNDLE_IDENTIFIER = com.BW.CollectionNodeUnitTests; 734 | PRODUCT_NAME = "$(TARGET_NAME)"; 735 | SWIFT_VERSION = 4.0; 736 | TARGETED_DEVICE_FAMILY = "1,2"; 737 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/CollectionNodeExample.app/CollectionNodeExample"; 738 | }; 739 | name = Debug; 740 | }; 741 | 2275AFAD1F852FCE00F85503 /* Release */ = { 742 | isa = XCBuildConfiguration; 743 | buildSettings = { 744 | BUNDLE_LOADER = "$(TEST_HOST)"; 745 | CODE_SIGN_STYLE = Automatic; 746 | DEVELOPMENT_TEAM = D9KU92KK65; 747 | INFOPLIST_FILE = CollectionNodeUnitTests/Info.plist; 748 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 749 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 750 | PRODUCT_BUNDLE_IDENTIFIER = com.BW.CollectionNodeUnitTests; 751 | PRODUCT_NAME = "$(TARGET_NAME)"; 752 | SWIFT_VERSION = 4.0; 753 | TARGETED_DEVICE_FAMILY = "1,2"; 754 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/CollectionNodeExample.app/CollectionNodeExample"; 755 | }; 756 | name = Release; 757 | }; 758 | 387167B12074271F00D4F4B8 /* Debug */ = { 759 | isa = XCBuildConfiguration; 760 | buildSettings = { 761 | CLANG_ENABLE_OBJC_WEAK = YES; 762 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 763 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 764 | CODE_SIGN_IDENTITY = ""; 765 | CODE_SIGN_STYLE = Automatic; 766 | CURRENT_PROJECT_VERSION = 1; 767 | DEFINES_MODULE = YES; 768 | DEVELOPMENT_TEAM = 9KAJM7V6T4; 769 | DYLIB_COMPATIBILITY_VERSION = 1; 770 | DYLIB_CURRENT_VERSION = 1; 771 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 772 | INFOPLIST_FILE = CollectionNodeTv/Info.plist; 773 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 774 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 775 | PRODUCT_BUNDLE_IDENTIFIER = dream.CollectionNodeTv; 776 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 777 | SDKROOT = appletvos; 778 | SKIP_INSTALL = YES; 779 | SWIFT_VERSION = 4.0; 780 | TARGETED_DEVICE_FAMILY = 3; 781 | TVOS_DEPLOYMENT_TARGET = 11.3; 782 | VERSIONING_SYSTEM = "apple-generic"; 783 | VERSION_INFO_PREFIX = ""; 784 | }; 785 | name = Debug; 786 | }; 787 | 387167B22074271F00D4F4B8 /* Release */ = { 788 | isa = XCBuildConfiguration; 789 | buildSettings = { 790 | CLANG_ENABLE_OBJC_WEAK = YES; 791 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 792 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 793 | CODE_SIGN_IDENTITY = ""; 794 | CODE_SIGN_STYLE = Automatic; 795 | CURRENT_PROJECT_VERSION = 1; 796 | DEFINES_MODULE = YES; 797 | DEVELOPMENT_TEAM = 9KAJM7V6T4; 798 | DYLIB_COMPATIBILITY_VERSION = 1; 799 | DYLIB_CURRENT_VERSION = 1; 800 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 801 | INFOPLIST_FILE = CollectionNodeTv/Info.plist; 802 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 803 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 804 | PRODUCT_BUNDLE_IDENTIFIER = dream.CollectionNodeTv; 805 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 806 | SDKROOT = appletvos; 807 | SKIP_INSTALL = YES; 808 | SWIFT_VERSION = 4.0; 809 | TARGETED_DEVICE_FAMILY = 3; 810 | TVOS_DEPLOYMENT_TARGET = 11.3; 811 | VERSIONING_SYSTEM = "apple-generic"; 812 | VERSION_INFO_PREFIX = ""; 813 | }; 814 | name = Release; 815 | }; 816 | 387167B32074271F00D4F4B8 /* Debug */ = { 817 | isa = XCBuildConfiguration; 818 | buildSettings = { 819 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 820 | CLANG_ENABLE_OBJC_WEAK = YES; 821 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 822 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 823 | CODE_SIGN_STYLE = Automatic; 824 | DEVELOPMENT_TEAM = ""; 825 | INFOPLIST_FILE = CollectionNodeTvTests/Info.plist; 826 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 827 | PRODUCT_BUNDLE_IDENTIFIER = dream.CollectionNodeTvTests; 828 | PRODUCT_NAME = "$(TARGET_NAME)"; 829 | SDKROOT = appletvos; 830 | SWIFT_VERSION = 4.0; 831 | TARGETED_DEVICE_FAMILY = 3; 832 | TVOS_DEPLOYMENT_TARGET = 11.3; 833 | }; 834 | name = Debug; 835 | }; 836 | 387167B42074271F00D4F4B8 /* Release */ = { 837 | isa = XCBuildConfiguration; 838 | buildSettings = { 839 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 840 | CLANG_ENABLE_OBJC_WEAK = YES; 841 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 842 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 843 | CODE_SIGN_STYLE = Automatic; 844 | DEVELOPMENT_TEAM = ""; 845 | INFOPLIST_FILE = CollectionNodeTvTests/Info.plist; 846 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 847 | PRODUCT_BUNDLE_IDENTIFIER = dream.CollectionNodeTvTests; 848 | PRODUCT_NAME = "$(TARGET_NAME)"; 849 | SDKROOT = appletvos; 850 | SWIFT_VERSION = 4.0; 851 | TARGETED_DEVICE_FAMILY = 3; 852 | TVOS_DEPLOYMENT_TARGET = 11.3; 853 | }; 854 | name = Release; 855 | }; 856 | /* End XCBuildConfiguration section */ 857 | 858 | /* Begin XCConfigurationList section */ 859 | 224E5CE01F301EB0005CA1AE /* Build configuration list for PBXProject "CollectionNode" */ = { 860 | isa = XCConfigurationList; 861 | buildConfigurations = ( 862 | 224E5CFB1F301EB0005CA1AE /* Debug */, 863 | 224E5CFC1F301EB0005CA1AE /* Release */, 864 | ); 865 | defaultConfigurationIsVisible = 0; 866 | defaultConfigurationName = Release; 867 | }; 868 | 224E5CFD1F301EB0005CA1AE /* Build configuration list for PBXNativeTarget "CollectionNodeExample" */ = { 869 | isa = XCConfigurationList; 870 | buildConfigurations = ( 871 | 224E5CFE1F301EB0005CA1AE /* Debug */, 872 | 224E5CFF1F301EB0005CA1AE /* Release */, 873 | ); 874 | defaultConfigurationIsVisible = 0; 875 | defaultConfigurationName = Release; 876 | }; 877 | 225743ED1F33C59A0098549B /* Build configuration list for PBXNativeTarget "CollectionNode" */ = { 878 | isa = XCConfigurationList; 879 | buildConfigurations = ( 880 | 225743EE1F33C59A0098549B /* Debug */, 881 | 225743EF1F33C59A0098549B /* Release */, 882 | ); 883 | defaultConfigurationIsVisible = 0; 884 | defaultConfigurationName = Release; 885 | }; 886 | 2275AFAE1F852FCE00F85503 /* Build configuration list for PBXNativeTarget "CollectionNodeUnitTests" */ = { 887 | isa = XCConfigurationList; 888 | buildConfigurations = ( 889 | 2275AFAC1F852FCE00F85503 /* Debug */, 890 | 2275AFAD1F852FCE00F85503 /* Release */, 891 | ); 892 | defaultConfigurationIsVisible = 0; 893 | defaultConfigurationName = Release; 894 | }; 895 | 387167B52074271F00D4F4B8 /* Build configuration list for PBXNativeTarget "CollectionNodeTv" */ = { 896 | isa = XCConfigurationList; 897 | buildConfigurations = ( 898 | 387167B12074271F00D4F4B8 /* Debug */, 899 | 387167B22074271F00D4F4B8 /* Release */, 900 | ); 901 | defaultConfigurationIsVisible = 0; 902 | defaultConfigurationName = Release; 903 | }; 904 | 387167B62074271F00D4F4B8 /* Build configuration list for PBXNativeTarget "CollectionNodeTvTests" */ = { 905 | isa = XCConfigurationList; 906 | buildConfigurations = ( 907 | 387167B32074271F00D4F4B8 /* Debug */, 908 | 387167B42074271F00D4F4B8 /* Release */, 909 | ); 910 | defaultConfigurationIsVisible = 0; 911 | defaultConfigurationName = Release; 912 | }; 913 | /* End XCConfigurationList section */ 914 | }; 915 | rootObject = 224E5CDD1F301EB0005CA1AE /* Project object */; 916 | } 917 | -------------------------------------------------------------------------------- /CollectionNode.xcodeproj/xcshareddata/xcschemes/CollectionNode.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 34 | 35 | 45 | 46 | 52 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 70 | 71 | 72 | 73 | 75 | 76 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /CollectionNode/BWCollectionView.h: -------------------------------------------------------------------------------- 1 | // 2 | // BWCollectionView.h 3 | // BWCollectionView 4 | // 5 | // Created by Bruno Fulber Wide on 03/08/17. 6 | // Copyright © 2017 BW. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for BWCollectionView. 12 | FOUNDATION_EXPORT double BWCollectionViewVersionNumber; 13 | 14 | //! Project version string for BWCollectionView. 15 | FOUNDATION_EXPORT const unsigned char BWCollectionViewVersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | 20 | -------------------------------------------------------------------------------- /CollectionNode/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | $(CURRENT_PROJECT_VERSION) 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /CollectionNodeExample/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /CollectionNodeExample/Emoji.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Emoji.swift 3 | // SKCollectionViewExample 4 | // 5 | // Created by Bruno Fulber Wide on 31/07/17. 6 | // Copyright © 2017 BW. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | class Emoji { 13 | var name : String 14 | var image : UIImage 15 | 16 | init(_ name: String, image: UIImage) { 17 | self.name = name 18 | self.image = image 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /CollectionNodeExample/EmojiItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // emojiItem.swift 3 | // SKCollectionViewExample 4 | // 5 | // Created by Bruno Fulber Wide on 31/07/17. 6 | // Copyright © 2017 BW. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import SpriteKit 11 | 12 | class EmojiItem : CollectionNodeItem { 13 | private var nameLabel : SKLabelNode = SKLabelNode() 14 | private var imageNode : SKSpriteNode! 15 | 16 | var emoji : Emoji! { 17 | didSet{ 18 | nameLabel.text = emoji.name 19 | imageNode = SKSpriteNode(texture: SKTexture(image: emoji.image)) 20 | 21 | nameLabel.position.y += 80 22 | 23 | addChild(nameLabel) 24 | addChild(imageNode) 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /CollectionNodeExample/EmojiModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // EmojiModel.swift 3 | // BWCollectionViewExample 4 | // 5 | // Created by Bruno Fulber Wide on 05/08/17. 6 | // Copyright © 2017 BW. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | public class EmojiModel { 11 | static var `default` : EmojiModel = EmojiModel() 12 | 13 | let emojis = [ Emoji("Heart Face", image: #imageLiteral(resourceName: "HeartFace")), 14 | Emoji("Smiley Face", image: #imageLiteral(resourceName: "SmileyFace")), 15 | Emoji("Space Invader", image: #imageLiteral(resourceName: "SpaceInvader")), 16 | Emoji("Alien", image: #imageLiteral(resourceName: "Alien")) ] 17 | 18 | private init(){ 19 | 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /CollectionNodeExample/GameScene.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GameScene.swift 3 | // SKCollectionViewExample 4 | // 5 | // Created by Bruno Fulber Wide on 31/07/17. 6 | // Copyright © 2017 BW. All rights reserved. 7 | // 8 | 9 | import SpriteKit 10 | import GameplayKit 11 | 12 | class GameScene: SKScene { 13 | 14 | var emojiCollection : CollectionNode! 15 | 16 | override func didMove(to view: SKView) { 17 | emojiCollection = CollectionNode(at: view) 18 | 19 | emojiCollection.dataSource = self 20 | emojiCollection.delegate = self 21 | 22 | emojiCollection.spaceBetweenItems = 15 23 | 24 | emojiCollection.position = CGPoint(x: size.width*0.5, 25 | y: size.height*0.5) 26 | 27 | addChild(emojiCollection) 28 | } 29 | 30 | override func update(_ currentTime: TimeInterval) { 31 | //be sure to call this so the collection works properly 32 | emojiCollection.update(currentTime) 33 | } 34 | } 35 | 36 | extension GameScene: CollectionNodeDataSource { 37 | func numberOfItems() -> Int { 38 | return EmojiModel.default.emojis.count 39 | } 40 | 41 | func collectionNode(_ collection: CollectionNode, itemFor index: Index) -> CollectionNodeItem { 42 | //create and configure items 43 | let item = EmojiItem() 44 | item.emoji = EmojiModel.default.emojis[index] 45 | return item 46 | } 47 | } 48 | 49 | extension GameScene: CollectionNodeDelegate { 50 | func collectionNode(_ collectionNode: CollectionNode, didShowItemAt index: Index) { 51 | let growAction = SKAction.scale(to: 1.3, duration: 0.15) 52 | let shrinkAction = SKAction.scale(to: 1, duration: 0.15) 53 | 54 | collectionNode.items[index].run(growAction) 55 | collectionNode.items.filter{ emojiCollection.items.index(of: $0) != index }.forEach{ $0.run(shrinkAction) } 56 | } 57 | 58 | func collectionNode(_ collectionNode: CollectionNode, didSelectItem item: CollectionNodeItem, at index: Index) { 59 | print("selected \(item.name ?? "noNameItem") at index \(index)") 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /CollectionNodeExample/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIMainStoryboardFile 26 | Main 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UIStatusBarHidden 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | UISupportedInterfaceOrientations~ipad 40 | 41 | UIInterfaceOrientationPortrait 42 | UIInterfaceOrientationPortraitUpsideDown 43 | UIInterfaceOrientationLandscapeLeft 44 | UIInterfaceOrientationLandscapeRight 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /CollectionNodeExample/Support/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // SKCollectionViewExample 4 | // 5 | // Created by Bruno Fulber Wide on 31/07/17. 6 | // Copyright © 2017 BW. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | 14 | var window: UIWindow? 15 | 16 | 17 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 18 | // Override point for customization after application launch. 19 | return true 20 | } 21 | 22 | func applicationWillResignActive(_ application: UIApplication) { 23 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 24 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 25 | } 26 | 27 | func applicationDidEnterBackground(_ application: UIApplication) { 28 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 29 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 30 | } 31 | 32 | func applicationWillEnterForeground(_ application: UIApplication) { 33 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 34 | } 35 | 36 | func applicationDidBecomeActive(_ application: UIApplication) { 37 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 38 | } 39 | 40 | func applicationWillTerminate(_ application: UIApplication) { 41 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 42 | } 43 | 44 | 45 | } 46 | 47 | -------------------------------------------------------------------------------- /CollectionNodeExample/Support/Assets.xcassets/Alien.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "extraterrestrial-alien_1f47d.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /CollectionNodeExample/Support/Assets.xcassets/Alien.imageset/extraterrestrial-alien_1f47d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bwide/CollectionNode/c836ecafa7673645c99152b40fc87ff80aa8a150/CollectionNodeExample/Support/Assets.xcassets/Alien.imageset/extraterrestrial-alien_1f47d.png -------------------------------------------------------------------------------- /CollectionNodeExample/Support/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "size" : "1024x1024", 91 | "scale" : "1x" 92 | } 93 | ], 94 | "info" : { 95 | "version" : 1, 96 | "author" : "xcode" 97 | } 98 | } -------------------------------------------------------------------------------- /CollectionNodeExample/Support/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /CollectionNodeExample/Support/Assets.xcassets/HeartFace.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "smiling-face-with-heart-shaped-eyes_1f60d.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /CollectionNodeExample/Support/Assets.xcassets/HeartFace.imageset/smiling-face-with-heart-shaped-eyes_1f60d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bwide/CollectionNode/c836ecafa7673645c99152b40fc87ff80aa8a150/CollectionNodeExample/Support/Assets.xcassets/HeartFace.imageset/smiling-face-with-heart-shaped-eyes_1f60d.png -------------------------------------------------------------------------------- /CollectionNodeExample/Support/Assets.xcassets/SmileyFace.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "grinning-face_1f600.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /CollectionNodeExample/Support/Assets.xcassets/SmileyFace.imageset/grinning-face_1f600.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bwide/CollectionNode/c836ecafa7673645c99152b40fc87ff80aa8a150/CollectionNodeExample/Support/Assets.xcassets/SmileyFace.imageset/grinning-face_1f600.png -------------------------------------------------------------------------------- /CollectionNodeExample/Support/Assets.xcassets/SpaceInvader.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "alien-monster_1f47e.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /CollectionNodeExample/Support/Assets.xcassets/SpaceInvader.imageset/alien-monster_1f47e.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bwide/CollectionNode/c836ecafa7673645c99152b40fc87ff80aa8a150/CollectionNodeExample/Support/Assets.xcassets/SpaceInvader.imageset/alien-monster_1f47e.png -------------------------------------------------------------------------------- /CollectionNodeExample/Support/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /CollectionNodeExample/Support/GameViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GameViewController.swift 3 | // SKCollectionViewExample 4 | // 5 | // Created by Bruno Fulber Wide on 31/07/17. 6 | // Copyright © 2017 BW. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import SpriteKit 11 | import GameplayKit 12 | 13 | class GameViewController: UIViewController { 14 | 15 | override func viewDidLoad() { 16 | super.viewDidLoad() 17 | 18 | if let view = self.view as! SKView? { 19 | let scene = GameScene(size: view.frame.size) 20 | 21 | scene.scaleMode = .aspectFill 22 | 23 | // Present the scene 24 | view.presentScene(scene) 25 | 26 | view.ignoresSiblingOrder = true 27 | 28 | view.showsFPS = true 29 | view.showsNodeCount = true 30 | } 31 | } 32 | 33 | override var shouldAutorotate: Bool { 34 | return true 35 | } 36 | 37 | override var supportedInterfaceOrientations: UIInterfaceOrientationMask { 38 | if UIDevice.current.userInterfaceIdiom == .phone { 39 | return .allButUpsideDown 40 | } else { 41 | return .all 42 | } 43 | } 44 | 45 | override func didReceiveMemoryWarning() { 46 | super.didReceiveMemoryWarning() 47 | // Release any cached data, images, etc that aren't in use. 48 | } 49 | 50 | override var prefersStatusBarHidden: Bool { 51 | return true 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /CollectionNodeTv/CollectionNodeTv.h: -------------------------------------------------------------------------------- 1 | // 2 | // CollectionNodeTv.h 3 | // CollectionNodeTv 4 | // 5 | // Created by Miguel Nery on 03/04/18. 6 | // Copyright © 2018 BW. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for CollectionNodeTv. 12 | FOUNDATION_EXPORT double CollectionNodeTvVersionNumber; 13 | 14 | //! Project version string for CollectionNodeTv. 15 | FOUNDATION_EXPORT const unsigned char CollectionNodeTvVersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | 20 | -------------------------------------------------------------------------------- /CollectionNodeTv/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | $(CURRENT_PROJECT_VERSION) 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /CollectionNodeTvTests/CollectionNodeTvTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CollectionNodeTvTests.swift 3 | // CollectionNodeTvTests 4 | // 5 | // Created by Miguel Nery on 03/04/18. 6 | // Copyright © 2018 BW. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | @testable import CollectionNodeTv 11 | 12 | class CollectionNodeTvTests: XCTestCase { 13 | 14 | override func setUp() { 15 | super.setUp() 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | } 18 | 19 | override func tearDown() { 20 | // Put teardown code here. This method is called after the invocation of each test method in the class. 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | // This is an example of a functional test case. 26 | // Use XCTAssert and related functions to verify your tests produce the correct results. 27 | } 28 | 29 | func testPerformanceExample() { 30 | // This is an example of a performance test case. 31 | self.measure { 32 | // Put the code you want to measure the time of here. 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /CollectionNodeTvTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /CollectionNodeUnitTests/CollectionNodeUnitTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CollectionNodeUnitTests.swift 3 | // CollectionNodeUnitTests 4 | // 5 | // Created by Bruno Fulber Wide on 04/10/17. 6 | // Copyright © 2017 BW. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | import SpriteKit 11 | 12 | class CollectionNodeUnitTests: XCTestCase { 13 | 14 | var scene: MockGameScene! 15 | 16 | override func setUp() { 17 | super.setUp() 18 | 19 | scene = MockGameScene(size: UIScreen.main.bounds.size) 20 | } 21 | 22 | override func tearDown() { 23 | // Put teardown code here. This method is called after the invocation of each test method in the class. 24 | super.tearDown() 25 | } 26 | 27 | func testIndex() { 28 | // This is an example of a functional test case. 29 | // Use XCTAssert and related functions to verify your tests produce the correct results. 30 | 31 | let gameVC = GameViewController() 32 | 33 | 34 | } 35 | 36 | 37 | func testPerformanceExample() { 38 | // This is an example of a performance test case. 39 | self.measure { 40 | // Put the code you want to measure the time of here. 41 | } 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /CollectionNodeUnitTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /CollectionNodeUnitTests/mockGameScene.swift: -------------------------------------------------------------------------------- 1 | // 2 | // mockGameScene.swift 3 | // CollectionNodeUnitTests 4 | // 5 | // Created by Bruno Fulber Wide on 17/10/17. 6 | // Copyright © 2017 BW. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import SpriteKit 11 | import CollectionNode 12 | 13 | class MockGameScene: SKScene { 14 | 15 | public var collection: CollectionNode! 16 | public var names: [String] = ["1", "2", "3"] 17 | 18 | override func didMove(to view: SKView) { 19 | collection = CollectionNode(at: view) 20 | collection.dataSource = self 21 | } 22 | 23 | override func update(_ currentTime: TimeInterval) { 24 | collection.update(currentTime) 25 | } 26 | } 27 | 28 | extension MockGameScene: CollectionNodeDataSource { 29 | func numberOfItems() -> Int { 30 | return names.count 31 | } 32 | 33 | func collectionNode(_ collection: CollectionNode, itemFor index: Index) -> CollectionNodeItem { 34 | let item = CollectionNodeItem() 35 | let node = SKLabelNode(text: names[index]) 36 | item.addChild( node ) 37 | 38 | return item 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | # Report 2 | 3 | ## Request a feature 4 | 5 | ### What do you want to add? 6 | 7 | > 8 | 9 | ### How should it look like? 10 | 11 | > 12 | 13 | ## Report a bug 14 | 15 | ### What did you expect to happen? 16 | 17 | > 18 | 19 | ### What actually happened? 20 | 21 | > 22 | 23 | ### What are the steps to reproduce that? 24 | 25 | > 26 | 27 | ### Environment 28 | 29 | #### Version of: 30 | - the CollectionNode: 31 | - Swift: 32 | - iOS: 33 | - Device: 34 | - Xcode: 35 | 36 | - If you use Cocoapods: _run `pod env | pbcopy` and insert here_ 37 | - If you use Carthage: _run `carthage version | pbcopy` and insert here_ 38 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Bruno Wide 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CollectionNode 2 | [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) 3 | [![Badge w/ Version](https://cocoapod-badges.herokuapp.com/v/NSStringMask/badge.png)](https://cocoapods.org/pods/CollectionNode) 4 | ![MIT](https://cocoapod-badges.herokuapp.com/l/NSStringMask/badge.png) 5 | ![Swift 4.0.x](https://img.shields.io/badge/Swift-4.0.x-orange.svg) 6 | [![Build Status](https://travis-ci.org/bwide/CollectionNode.svg?branch=master)](https://travis-ci.org/bwide/CollectionNode) 7 | 8 | A collectionView made for Sprite Kit 9 | 10 | ![Preview](https://github.com/bwide/BWCollectionView/blob/master/iphonePreview.gif) 11 | 12 | ## installation 13 | 14 | ### Carthage 15 | 16 | [Carthage](https://github.com/Carthage/Carthage) is a dependency manager that provides binary frameworks for your projects. 17 | 18 | you can install Carthage through [Homebrew](http://brew.sh/), with the following command: 19 | 20 | ```bash 21 | $ brew update 22 | $ brew install carthage 23 | ``` 24 | 25 | Then you need to tell carthage to integrate this framework in your Xcode project, by adding the following to your [Cartfile](https://github.com/Carthage/Carthage/blob/master/Documentation/Artifacts.md#cartfile): 26 | 27 | ```ruby 28 | github "bwide/CollectionNode" 29 | ``` 30 | 31 | Now: 32 | 33 | 1. On your project folder, run `carthage update` 34 | 1. On your application target, drag `BWCollectionView.framework` into your Xcode project `Embedded Binaries` 35 | 36 | ### CocoaPods 37 | 38 | Add this to your [Podfile](https://guides.cocoapods.org/syntax/podfile.html) 39 | 40 | ```ruby 41 | pod 'CollectionNode' 42 | ``` 43 | 44 | 45 | ### important 46 | 47 | If you plan to upload your app you must follow additional instructions on Carthage's [README](https://github.com/Carthage/Carthage/blob/master/README.md) on adding frameworks to your application if you're building for iOS, tvOS, or watchOS. 48 | 49 | ## usage 50 | 51 | 1. Import ```CollectionNode``` module on your ```CollectionNodeScene``` class: 52 | 53 | ```swift 54 | import CollectionNode 55 | ``` 56 | 57 | 2. Add a ```CollectionNode``` to ```CollectionNodeScene``` and set it's dataSource and Delegate: 58 | 59 | ```swift 60 | private var myCollectionNode: CollectionNode! 61 | 62 | override func didMove(to view: SKView) { 63 | myCollectionNode = CollectionNode(at: view) 64 | 65 | myCollectionNode.dataSource = self 66 | myCollectionNode.delegate = self 67 | 68 | addChild(myCollectionNode) 69 | } 70 | ``` 71 | 72 | 3. Conform this ```CollectionNodeScene``` to ```CollectionNodeDataSource``` and implement all it's methods: 73 | ```swift 74 | extension GameScene: CollectionNodeDataSource { 75 | func numberOfItems() -> Int { 76 | return EmojiModel.default.emojis.count 77 | } 78 | 79 | func collectionNode(_ collection: CollectionNode, itemFor index: Index) -> CollectionNodeItem { 80 | //create and configure items 81 | let item = EmojiItem() 82 | item.emoji = EmojiModel.default.emojis[index] 83 | return item 84 | } 85 | } 86 | ``` 87 | 4. Conform to ```CollectionNodeDelegate```and override the methods that you need: 88 | ```swift 89 | extension GameScene: CollectionNodeDelegate { 90 | 91 | func collectionNode(_ collectionNode: CollectionNode, didShowItemAt index: Index) { 92 | let growAction = SKAction.scale(to: 1.3, duration: 0.15) 93 | let shrinkAction = SKAction.scale(to: 1, duration: 0.15) 94 | 95 | collectionNode.item(at: index).run(growAction) 96 | collectionNode.children.filter{ emojiCollection.children.index(of: $0) != index }.forEach{ $0.run(shrinkAction) } 97 | } 98 | 99 | func collectionNode(_ collectionNode: CollectionNode, didSelectItem item: CollectionNodeItem, at index: Index) { 100 | print("selected \(item.name ?? "noNameItem") at index \(index)") 101 | } 102 | } 103 | ``` 104 | 105 | 5. Update your ```CollectionNode``` with the scene: 106 | 107 | ```swift 108 | override func update(_ currentTime: TimeInterval) { 109 | collectionNode.update(currentTime) 110 | } 111 | ``` 112 | 113 | 6. Now ```CollectionNode```will work with it's default implementation. 114 | 115 | ### Properties 116 | 117 | ```swift 118 | private(set) public var index: Int 119 | ``` 120 | the current index of the CollectionNode 121 | 122 | ```swift 123 | public weak var dataSource: CollectionNodeDataSource? 124 | ``` 125 | the object that acts as data source for the collection view 126 | 127 | ```swift 128 | public weak var delegate: CollectionNodeDelegate? 129 | ``` 130 | the object that acts as delegate for the collection view 131 | 132 | ```swift 133 | public var spaceBetweenItems: CGFloat 134 | ``` 135 | the spacing between elements of the CollectionNode 136 | 137 | ```swift 138 | public var items: [CollectionNodeItem] 139 | ``` 140 | returns all the children of this node that are CollectionNodeItems 141 | 142 | ### Methods 143 | 144 | ```swift 145 | public func update(_ currentTime: TimeInterval, dampingRatio: Double) 146 | ``` 147 | To be called on the scene's update. Allows this node to animate when touch is released 148 | dampingRatio: the ratio for the collectionNode deacceleration (0 to 1 meaning the percentage of speed to deaccelerate when touch is released, default is 1%) 149 | 150 | ```swift 151 | public func snap(to index: Index, withDuration duration: Double) 152 | ``` 153 | snaps to an item at a given index 154 | duration: The duration of the snap animation in seconds (default is 0.3) 155 | 156 | ```swift 157 | public func reloadData() 158 | ``` 159 | reloads all the items in the collection 160 | 161 | 162 | ### CollectionNodeDelegate 163 | 164 | ```swift 165 | func collectionNode(_ collectionNode: CollectionNode, didShowItemAt index: Index) -> Void 166 | ``` 167 | returns the number of items to be displayed on this collectionNode 168 | 169 | 170 | ```swift 171 | func collectionNode(_ collectionNode: CollectionNode, didSelectItem item: CollectionNodeItem, at index: Index ) -> Void 172 | ``` 173 | called each time an item is selected 174 | 175 | ### CollectionNodeDataSource 176 | 177 | ```swift 178 | func numberOfItems() -> Int 179 | ``` 180 | here you should tell the number of items this collection will display 181 | 182 | 183 | ```swift 184 | func collectionNode(_ collection: CollectionNode, itemFor index: Index) -> CollectionNodeItem 185 | ``` 186 | here you should return an item for each index in the collectionVIew 187 | 188 | ## Apps using CollectionNode 189 | 190 | * [Tiles](https://itunes.apple.com/br/app/tiles-puzzle-game/id1253612564?mt=8) 191 | 192 | ![Preview](https://github.com/bwide/CollectionNode/blob/master/tiles.gif) 193 | 194 | Show me your apps! if you have used this collection i'd love to see it, reach me in ```bfwide07@gmail.com``` you can send me images and i will post them here. 195 | -------------------------------------------------------------------------------- /Source/CollectionNode.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CollectionNode.swift 3 | // 4 | // Created by Bruno Fulber Wide on 18/07/17. 5 | // Copyright © 2017 BW. All rights reserved. 6 | // 7 | 8 | import UIKit 9 | import SpriteKit 10 | public typealias Index = Int 11 | 12 | public class CollectionNode: SKNode { 13 | 14 | // MARK: - public 15 | /** the current index of the CollectionNode */ 16 | private(set) public var index: Int = 0 { 17 | didSet { delegate?.collectionNode(self, didShowItemAt: index) } 18 | } 19 | 20 | /** the object that acts as data source for the collection view */ 21 | public weak var dataSource: CollectionNodeDataSource? { 22 | didSet { reloadData() } 23 | } 24 | 25 | /** the object that acts as delegate for the collection view */ 26 | public weak var delegate: CollectionNodeDelegate? 27 | 28 | /** returns all the children of this node that are CollectionNodeItems */ 29 | public var items: [CollectionNodeItem] { 30 | var nodes: [CollectionNodeItem] = [] 31 | children.forEach { 32 | if let item = $0 as? CollectionNodeItem { 33 | nodes.append(item) 34 | } 35 | } 36 | return nodes 37 | } 38 | 39 | // MARK: - Default values 40 | /** the spacing between elements of the CollectionNode */ 41 | public var spaceBetweenItems: CGFloat = 5 { 42 | didSet { setSpacing() } 43 | } 44 | 45 | // MARK: - initializers 46 | public init(at view: SKView) { 47 | skview = view 48 | super.init() 49 | skview?.addGestureRecognizer( panGestureRecognizer ) 50 | 51 | #if os(tvOS) 52 | self.skview?.addGestureRecognizer( self.tapGestureRecognizer ) 53 | #endif 54 | } 55 | 56 | deinit { 57 | skview?.removeGestureRecognizer( panGestureRecognizer ) 58 | 59 | #if os(tvOS) 60 | skview?.removeGestureRecognizer( tapGestureRecognizer ) 61 | #endif 62 | } 63 | 64 | required public init?(coder aDecoder: NSCoder) { 65 | fatalError("init(coder:) has not been implemented") 66 | } 67 | 68 | override public func removeFromParent() { 69 | super.removeFromParent() 70 | skview?.removeGestureRecognizer( panGestureRecognizer ) 71 | #if os(tvOS) 72 | skview?.removeGestureRecognizer( tapGestureRecognizer ) 73 | #endif 74 | } 75 | 76 | // MARK: - Public methods 77 | /** 78 | To be called on the scene's update. Allows this node to animate when touch is released 79 | 80 | - parameter dampingRatio: the ratio for the collectionNode deacceleration (0 to 1 meaning the percentage of speed to deaccelerate when touch is released, default is 1%) 81 | */ 82 | public func update(_ currentTime: TimeInterval, dampingRatio: Double = 0.01) { 83 | if shouldBeginUpdating { 84 | updateIndex() 85 | 86 | let time = date.timeIntervalSinceNow 87 | let distance = -(trueVelocity * time) 88 | 89 | let action = SKAction.move(by: CGVector(dx: distance, dy: 0), 90 | duration: 0.0) 91 | //run actions 92 | children.forEach { $0.run(action, withKey: "move") } 93 | 94 | //update context 95 | damping = damping + trueVelocity * dampingRatio 96 | trueVelocity -= damping 97 | date = Date() 98 | totalDistance += distance 99 | 100 | if abs( trueVelocity ) >= abs( previousVelocity ) { 101 | shouldBeginUpdating = false 102 | updateIndex() 103 | snap(to: index) 104 | } else { previousVelocity = trueVelocity } 105 | } 106 | } 107 | 108 | /** 109 | snaps to an item at a given index 110 | 111 | - parameter duration: The duration of the snap animation in seconds (default is 0.3) 112 | */ 113 | public func snap(to index: Index, withDuration duration: Double = 0.3) { 114 | 115 | var distance = 116 | origin.distance(to: children[index].position) 117 | 118 | if children[index].position.x >= 0 { distance = -distance } 119 | 120 | let action = SKAction.moveBy(x: distance, 121 | y: 0, 122 | duration: duration) 123 | 124 | children.forEach { $0.run(action) } 125 | totalDistance = 0 126 | } 127 | 128 | /** reloads all the items in the collection */ 129 | public func reloadData() { 130 | removeAllChildren() 131 | 132 | for index in 0.. $1.calculateAccumulatedFrame().size.width }.first! 140 | origin = children[0].position 141 | index = 0 142 | 143 | setSpacing() 144 | } 145 | 146 | // MARK: - private 147 | private weak var skview: SKView? 148 | private var touchDistance: Double! 149 | private var biggestItem: SKNode! 150 | private var shouldBeginUpdating: Bool = false 151 | private var date: Date! 152 | private var pureVelocity: Double! 153 | private var trueVelocity: Double = 0 154 | private var previousVelocity: Double! 155 | private var damping: Double! 156 | fileprivate var totalDistance: Double = 0 157 | private var origin: CGPoint! 158 | private lazy var panGestureRecognizer: UIPanGestureRecognizer! = 159 | UIPanGestureRecognizer(target: self, action: #selector(handlePan)) 160 | 161 | #if os(tvOS) 162 | private lazy var tapGestureRecognizer: UIGestureRecognizer! = UITapGestureRecognizer(target: self, action: #selector(handleTap)) 163 | 164 | @objc private func handleTap() { 165 | guard let delegate = self.delegate else { 166 | return 167 | } 168 | 169 | if self.totalDistance <= 5 { delegate.collectionNode(self, didSelectItem: items[index], at: index) } 170 | } 171 | 172 | public override var canBecomeFocused: Bool { 173 | return true 174 | } 175 | 176 | #endif 177 | 178 | fileprivate func setSpacing(){ 179 | for index in 0.. 0 || index == dataSource!.numberOfItems()-1 && pureVelocity < 0 197 | ? pureVelocity*0.5 198 | : 0 199 | 200 | trueVelocity = pureVelocity - damping 201 | 202 | let time = date.timeIntervalSinceNow 203 | let distance = -(trueVelocity * time) 204 | let action = SKAction.move(by: CGVector(dx: distance , dy: 0) , duration: 0) 205 | 206 | children.forEach { $0.run(action, withKey: "move") } 207 | 208 | totalDistance += distance 209 | date = Date() 210 | case .ended: 211 | //keep moving 212 | date = Date() 213 | damping = 0 214 | previousVelocity = trueVelocity 215 | trueVelocity = pureVelocity 216 | shouldBeginUpdating = true 217 | default: 218 | print("nothing interesting happening") 219 | } 220 | } 221 | 222 | // MARK: - Support methods 223 | private func updateIndex() { 224 | let currentNode = 225 | children.filter { $0.isKind(of: CollectionNodeItem.self) }.sorted { 226 | return $0.position.distance(to: origin) < $1.position.distance(to: origin) 227 | }.first! 228 | if let node = currentNode as? CollectionNodeItem { 229 | index = node.index 230 | } 231 | } 232 | } 233 | 234 | // MARK: - collection node item 235 | open class CollectionNodeItem: SKNode { 236 | 237 | fileprivate var index: Index! 238 | 239 | fileprivate var collection: CollectionNode? { return self.parent as? CollectionNode } 240 | 241 | public override init() { 242 | super.init() 243 | isUserInteractionEnabled = true 244 | } 245 | 246 | required public init?(coder aDecoder: NSCoder) { 247 | fatalError("init(coder:) has not been implemented") 248 | } 249 | 250 | #if !os(tvOS) 251 | // if on tvOS, didSelectItem is called on tapGesture instead 252 | 253 | open override func touchesEnded(_ touches: Set, with event: UIEvent?) { 254 | if collection!.totalDistance <= 5 { 255 | collection!.delegate?.collectionNode(collection!, didSelectItem: self, at: self.index) 256 | } 257 | } 258 | #endif 259 | } 260 | 261 | public protocol CollectionNodeDataSource: class { 262 | /** - returns: the number of items to be displayed on this collectionNode */ 263 | func numberOfItems() -> Int 264 | 265 | /** 266 | here you should return the item for each index in the collectionVIew 267 | - parameter collection: the collectionNode in which the items are displayed 268 | - parameter index: the integer value of the index where the returned object will be at 269 | 270 | - returns: an SKNode to be displayed in each index 271 | */ 272 | func collectionNode(_ collection: CollectionNode, itemFor index: Index) -> CollectionNodeItem 273 | } 274 | 275 | public protocol CollectionNodeDelegate: class { 276 | /** 277 | called each time the collection view changes it's current index 278 | 279 | - parameter index: current index of the collectionNode 280 | */ 281 | func collectionNode(_ collectionNode: CollectionNode, didShowItemAt index: Index) 282 | /** 283 | called each time an item is selected 284 | */ 285 | func collectionNode(_ collectionNode: CollectionNode, didSelectItem item: CollectionNodeItem, at index: Index ) 286 | } 287 | 288 | public extension CollectionNodeDelegate { 289 | func collectionNode(_ collectionNode: CollectionNode, didShowItemAt index: Index) { } 290 | func collectionNode(_ collectionNode: CollectionNode, didSelectItem item: CollectionNodeItem, at index: Index ) { } 291 | } 292 | 293 | private extension CGPoint { 294 | func distance(to point: CGPoint) -> CGFloat { 295 | let deltaX = point.x - x 296 | let deltaY = point.y - y 297 | return hypot(deltaX, deltaY) 298 | } 299 | } 300 | -------------------------------------------------------------------------------- /iphonePreview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bwide/CollectionNode/c836ecafa7673645c99152b40fc87ff80aa8a150/iphonePreview.gif -------------------------------------------------------------------------------- /tiles.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bwide/CollectionNode/c836ecafa7673645c99152b40fc87ff80aa8a150/tiles.gif --------------------------------------------------------------------------------