├── Example
└── TinderProfile
│ ├── Podfile
│ ├── Podfile.lock
│ ├── Pods
│ ├── Headers
│ │ ├── Private
│ │ │ ├── PureLayout
│ │ │ │ ├── ALView+PureLayout.h
│ │ │ │ ├── NSArray+PureLayout.h
│ │ │ │ ├── NSLayoutConstraint+PureLayout.h
│ │ │ │ ├── PureLayout+Internal.h
│ │ │ │ ├── PureLayout.h
│ │ │ │ └── PureLayoutDefines.h
│ │ │ └── SDWebImage
│ │ │ │ ├── NSButton+WebCache.h
│ │ │ │ ├── NSData+ImageContentType.h
│ │ │ │ ├── NSImage+WebCache.h
│ │ │ │ ├── SDAnimatedImageRep.h
│ │ │ │ ├── SDImageCache.h
│ │ │ │ ├── SDImageCacheConfig.h
│ │ │ │ ├── SDWebImageCoder.h
│ │ │ │ ├── SDWebImageCoderHelper.h
│ │ │ │ ├── SDWebImageCodersManager.h
│ │ │ │ ├── SDWebImageCompat.h
│ │ │ │ ├── SDWebImageDownloader.h
│ │ │ │ ├── SDWebImageDownloaderOperation.h
│ │ │ │ ├── SDWebImageFrame.h
│ │ │ │ ├── SDWebImageGIFCoder.h
│ │ │ │ ├── SDWebImageImageIOCoder.h
│ │ │ │ ├── SDWebImageManager.h
│ │ │ │ ├── SDWebImageOperation.h
│ │ │ │ ├── SDWebImagePrefetcher.h
│ │ │ │ ├── SDWebImageTransition.h
│ │ │ │ ├── UIButton+WebCache.h
│ │ │ │ ├── UIImage+ForceDecode.h
│ │ │ │ ├── UIImage+GIF.h
│ │ │ │ ├── UIImage+MultiFormat.h
│ │ │ │ ├── UIImageView+HighlightedWebCache.h
│ │ │ │ ├── UIImageView+WebCache.h
│ │ │ │ ├── UIView+WebCache.h
│ │ │ │ └── UIView+WebCacheOperation.h
│ │ └── Public
│ │ │ ├── PureLayout
│ │ │ ├── ALView+PureLayout.h
│ │ │ ├── NSArray+PureLayout.h
│ │ │ ├── NSLayoutConstraint+PureLayout.h
│ │ │ ├── PureLayout+Internal.h
│ │ │ ├── PureLayout.h
│ │ │ └── PureLayoutDefines.h
│ │ │ └── SDWebImage
│ │ │ ├── NSButton+WebCache.h
│ │ │ ├── NSData+ImageContentType.h
│ │ │ ├── NSImage+WebCache.h
│ │ │ ├── SDAnimatedImageRep.h
│ │ │ ├── SDImageCache.h
│ │ │ ├── SDImageCacheConfig.h
│ │ │ ├── SDWebImageCoder.h
│ │ │ ├── SDWebImageCoderHelper.h
│ │ │ ├── SDWebImageCodersManager.h
│ │ │ ├── SDWebImageCompat.h
│ │ │ ├── SDWebImageDownloader.h
│ │ │ ├── SDWebImageDownloaderOperation.h
│ │ │ ├── SDWebImageFrame.h
│ │ │ ├── SDWebImageGIFCoder.h
│ │ │ ├── SDWebImageImageIOCoder.h
│ │ │ ├── SDWebImageManager.h
│ │ │ ├── SDWebImageOperation.h
│ │ │ ├── SDWebImagePrefetcher.h
│ │ │ ├── SDWebImageTransition.h
│ │ │ ├── UIButton+WebCache.h
│ │ │ ├── UIImage+ForceDecode.h
│ │ │ ├── UIImage+GIF.h
│ │ │ ├── UIImage+MultiFormat.h
│ │ │ ├── UIImageView+HighlightedWebCache.h
│ │ │ ├── UIImageView+WebCache.h
│ │ │ ├── UIView+WebCache.h
│ │ │ └── UIView+WebCacheOperation.h
│ ├── Manifest.lock
│ ├── Pods.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcuserdata
│ │ │ └── souvick.xcuserdatad
│ │ │ └── xcschemes
│ │ │ ├── Pods-TinderProfile.xcscheme
│ │ │ ├── PureLayout.xcscheme
│ │ │ ├── SDWebImage.xcscheme
│ │ │ └── xcschememanagement.plist
│ ├── PureLayout
│ │ ├── LICENSE
│ │ ├── PureLayout
│ │ │ └── PureLayout
│ │ │ │ ├── ALView+PureLayout.h
│ │ │ │ ├── ALView+PureLayout.m
│ │ │ │ ├── NSArray+PureLayout.h
│ │ │ │ ├── NSArray+PureLayout.m
│ │ │ │ ├── NSLayoutConstraint+PureLayout.h
│ │ │ │ ├── NSLayoutConstraint+PureLayout.m
│ │ │ │ ├── PureLayout+Internal.h
│ │ │ │ ├── PureLayout.h
│ │ │ │ └── PureLayoutDefines.h
│ │ └── README.md
│ ├── SDWebImage
│ │ ├── LICENSE
│ │ ├── README.md
│ │ └── SDWebImage
│ │ │ ├── NSButton+WebCache.h
│ │ │ ├── NSButton+WebCache.m
│ │ │ ├── NSData+ImageContentType.h
│ │ │ ├── NSData+ImageContentType.m
│ │ │ ├── NSImage+WebCache.h
│ │ │ ├── NSImage+WebCache.m
│ │ │ ├── SDAnimatedImageRep.h
│ │ │ ├── SDAnimatedImageRep.m
│ │ │ ├── SDImageCache.h
│ │ │ ├── SDImageCache.m
│ │ │ ├── SDImageCacheConfig.h
│ │ │ ├── SDImageCacheConfig.m
│ │ │ ├── SDWebImageCoder.h
│ │ │ ├── SDWebImageCoder.m
│ │ │ ├── SDWebImageCoderHelper.h
│ │ │ ├── SDWebImageCoderHelper.m
│ │ │ ├── SDWebImageCodersManager.h
│ │ │ ├── SDWebImageCodersManager.m
│ │ │ ├── SDWebImageCompat.h
│ │ │ ├── SDWebImageCompat.m
│ │ │ ├── SDWebImageDownloader.h
│ │ │ ├── SDWebImageDownloader.m
│ │ │ ├── SDWebImageDownloaderOperation.h
│ │ │ ├── SDWebImageDownloaderOperation.m
│ │ │ ├── SDWebImageFrame.h
│ │ │ ├── SDWebImageFrame.m
│ │ │ ├── SDWebImageGIFCoder.h
│ │ │ ├── SDWebImageGIFCoder.m
│ │ │ ├── SDWebImageImageIOCoder.h
│ │ │ ├── SDWebImageImageIOCoder.m
│ │ │ ├── SDWebImageManager.h
│ │ │ ├── SDWebImageManager.m
│ │ │ ├── SDWebImageOperation.h
│ │ │ ├── SDWebImagePrefetcher.h
│ │ │ ├── SDWebImagePrefetcher.m
│ │ │ ├── SDWebImageTransition.h
│ │ │ ├── SDWebImageTransition.m
│ │ │ ├── UIButton+WebCache.h
│ │ │ ├── UIButton+WebCache.m
│ │ │ ├── UIImage+ForceDecode.h
│ │ │ ├── UIImage+ForceDecode.m
│ │ │ ├── UIImage+GIF.h
│ │ │ ├── UIImage+GIF.m
│ │ │ ├── UIImage+MultiFormat.h
│ │ │ ├── UIImage+MultiFormat.m
│ │ │ ├── UIImageView+HighlightedWebCache.h
│ │ │ ├── UIImageView+HighlightedWebCache.m
│ │ │ ├── UIImageView+WebCache.h
│ │ │ ├── UIImageView+WebCache.m
│ │ │ ├── UIView+WebCache.h
│ │ │ ├── UIView+WebCache.m
│ │ │ ├── UIView+WebCacheOperation.h
│ │ │ └── UIView+WebCacheOperation.m
│ └── Target Support Files
│ │ ├── Pods-TinderProfile
│ │ ├── Pods-TinderProfile-acknowledgements.markdown
│ │ ├── Pods-TinderProfile-acknowledgements.plist
│ │ ├── Pods-TinderProfile-dummy.m
│ │ ├── Pods-TinderProfile-frameworks.sh
│ │ ├── Pods-TinderProfile-resources.sh
│ │ ├── Pods-TinderProfile.debug.xcconfig
│ │ └── Pods-TinderProfile.release.xcconfig
│ │ ├── PureLayout
│ │ ├── PureLayout-dummy.m
│ │ ├── PureLayout-prefix.pch
│ │ └── PureLayout.xcconfig
│ │ └── SDWebImage
│ │ ├── SDWebImage-dummy.m
│ │ ├── SDWebImage-prefix.pch
│ │ └── SDWebImage.xcconfig
│ ├── TinderProfile.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ ├── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── xcuserdata
│ │ │ └── souvick.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ └── xcuserdata
│ │ └── souvick.xcuserdatad
│ │ └── xcschemes
│ │ └── xcschememanagement.plist
│ ├── TinderProfile.xcworkspace
│ ├── contents.xcworkspacedata
│ ├── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── xcuserdata
│ │ └── souvick.xcuserdatad
│ │ ├── UserInterfaceState.xcuserstate
│ │ └── xcdebugger
│ │ └── Breakpoints_v2.xcbkptlist
│ └── TinderProfile
│ ├── AppDelegate.h
│ ├── AppDelegate.m
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ └── Contents.json
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── Info.plist
│ ├── ProfileView
│ ├── ProfileView.h
│ └── ProfileView.m
│ ├── ViewController.h
│ ├── ViewController.m
│ └── main.m
├── LICENSE
├── ProfileView
├── ProfileView.h
└── ProfileView.m
├── README.md
└── ScreenRecording.gif
/Example/TinderProfile/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment the next line to define a global platform for your project
2 | # platform :ios, '9.0'
3 |
4 | target 'TinderProfile' do
5 | # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
6 | # use_frameworks!
7 |
8 | # Pods for TinderProfile
9 |
10 | pod 'SDWebImage', '~> 4.0'
11 | pod 'PureLayout'
12 | end
13 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - PureLayout (3.0.2)
3 | - SDWebImage (4.3.3):
4 | - SDWebImage/Core (= 4.3.3)
5 | - SDWebImage/Core (4.3.3)
6 |
7 | DEPENDENCIES:
8 | - PureLayout
9 | - SDWebImage (~> 4.0)
10 |
11 | SPEC REPOS:
12 | https://github.com/CocoaPods/Specs.git:
13 | - PureLayout
14 | - SDWebImage
15 |
16 | SPEC CHECKSUMS:
17 | PureLayout: 4d550abe49a94f24c2808b9b95db9131685fe4cd
18 | SDWebImage: de4d90b5bff3571eae7bd16202b1f43135409fa5
19 |
20 | PODFILE CHECKSUM: 4a9cb0dd2665fc1f640effbb876105ca52ef9a35
21 |
22 | COCOAPODS: 1.5.0
23 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/PureLayout/ALView+PureLayout.h:
--------------------------------------------------------------------------------
1 | ../../../PureLayout/PureLayout/PureLayout/ALView+PureLayout.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/PureLayout/NSArray+PureLayout.h:
--------------------------------------------------------------------------------
1 | ../../../PureLayout/PureLayout/PureLayout/NSArray+PureLayout.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/PureLayout/NSLayoutConstraint+PureLayout.h:
--------------------------------------------------------------------------------
1 | ../../../PureLayout/PureLayout/PureLayout/NSLayoutConstraint+PureLayout.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/PureLayout/PureLayout+Internal.h:
--------------------------------------------------------------------------------
1 | ../../../PureLayout/PureLayout/PureLayout/PureLayout+Internal.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/PureLayout/PureLayout.h:
--------------------------------------------------------------------------------
1 | ../../../PureLayout/PureLayout/PureLayout/PureLayout.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/PureLayout/PureLayoutDefines.h:
--------------------------------------------------------------------------------
1 | ../../../PureLayout/PureLayout/PureLayout/PureLayoutDefines.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/NSButton+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/NSButton+WebCache.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/NSData+ImageContentType.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/NSData+ImageContentType.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/NSImage+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/NSImage+WebCache.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/SDAnimatedImageRep.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDAnimatedImageRep.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/SDImageCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDImageCache.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/SDImageCacheConfig.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDImageCacheConfig.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/SDWebImageCoder.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageCoder.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/SDWebImageCoderHelper.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageCoderHelper.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/SDWebImageCodersManager.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageCodersManager.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/SDWebImageCompat.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageCompat.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/SDWebImageDownloader.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloader.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/SDWebImageDownloaderOperation.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/SDWebImageFrame.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageFrame.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/SDWebImageGIFCoder.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageGIFCoder.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/SDWebImageImageIOCoder.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageImageIOCoder.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/SDWebImageManager.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageManager.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/SDWebImageOperation.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageOperation.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/SDWebImagePrefetcher.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImagePrefetcher.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/SDWebImageTransition.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageTransition.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/UIButton+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIButton+WebCache.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/UIImage+ForceDecode.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImage+ForceDecode.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/UIImage+GIF.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImage+GIF.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/UIImage+MultiFormat.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImage+MultiFormat.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/UIImageView+HighlightedWebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/UIImageView+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImageView+WebCache.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/UIView+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIView+WebCache.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Private/SDWebImage/UIView+WebCacheOperation.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIView+WebCacheOperation.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/PureLayout/ALView+PureLayout.h:
--------------------------------------------------------------------------------
1 | ../../../PureLayout/PureLayout/PureLayout/ALView+PureLayout.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/PureLayout/NSArray+PureLayout.h:
--------------------------------------------------------------------------------
1 | ../../../PureLayout/PureLayout/PureLayout/NSArray+PureLayout.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/PureLayout/NSLayoutConstraint+PureLayout.h:
--------------------------------------------------------------------------------
1 | ../../../PureLayout/PureLayout/PureLayout/NSLayoutConstraint+PureLayout.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/PureLayout/PureLayout+Internal.h:
--------------------------------------------------------------------------------
1 | ../../../PureLayout/PureLayout/PureLayout/PureLayout+Internal.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/PureLayout/PureLayout.h:
--------------------------------------------------------------------------------
1 | ../../../PureLayout/PureLayout/PureLayout/PureLayout.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/PureLayout/PureLayoutDefines.h:
--------------------------------------------------------------------------------
1 | ../../../PureLayout/PureLayout/PureLayout/PureLayoutDefines.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/NSButton+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/NSButton+WebCache.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/NSData+ImageContentType.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/NSData+ImageContentType.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/NSImage+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/NSImage+WebCache.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/SDAnimatedImageRep.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDAnimatedImageRep.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/SDImageCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDImageCache.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/SDImageCacheConfig.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDImageCacheConfig.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/SDWebImageCoder.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageCoder.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/SDWebImageCoderHelper.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageCoderHelper.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/SDWebImageCodersManager.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageCodersManager.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/SDWebImageCompat.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageCompat.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/SDWebImageDownloader.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloader.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/SDWebImageDownloaderOperation.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/SDWebImageFrame.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageFrame.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/SDWebImageGIFCoder.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageGIFCoder.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/SDWebImageImageIOCoder.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageImageIOCoder.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/SDWebImageManager.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageManager.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/SDWebImageOperation.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageOperation.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/SDWebImagePrefetcher.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImagePrefetcher.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/SDWebImageTransition.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageTransition.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/UIButton+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIButton+WebCache.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/UIImage+ForceDecode.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImage+ForceDecode.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/UIImage+GIF.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImage+GIF.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/UIImage+MultiFormat.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImage+MultiFormat.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/UIImageView+HighlightedWebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/UIImageView+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImageView+WebCache.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/UIView+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIView+WebCache.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Headers/Public/SDWebImage/UIView+WebCacheOperation.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIView+WebCacheOperation.h
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Manifest.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - PureLayout (3.0.2)
3 | - SDWebImage (4.3.3):
4 | - SDWebImage/Core (= 4.3.3)
5 | - SDWebImage/Core (4.3.3)
6 |
7 | DEPENDENCIES:
8 | - PureLayout
9 | - SDWebImage (~> 4.0)
10 |
11 | SPEC REPOS:
12 | https://github.com/CocoaPods/Specs.git:
13 | - PureLayout
14 | - SDWebImage
15 |
16 | SPEC CHECKSUMS:
17 | PureLayout: 4d550abe49a94f24c2808b9b95db9131685fe4cd
18 | SDWebImage: de4d90b5bff3571eae7bd16202b1f43135409fa5
19 |
20 | PODFILE CHECKSUM: 4a9cb0dd2665fc1f640effbb876105ca52ef9a35
21 |
22 | COCOAPODS: 1.5.0
23 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Pods.xcodeproj/xcuserdata/souvick.xcuserdatad/xcschemes/Pods-TinderProfile.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
44 |
45 |
46 |
52 |
53 |
55 |
56 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Pods.xcodeproj/xcuserdata/souvick.xcuserdatad/xcschemes/PureLayout.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
44 |
45 |
46 |
52 |
53 |
55 |
56 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Pods.xcodeproj/xcuserdata/souvick.xcuserdatad/xcschemes/SDWebImage.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
44 |
45 |
46 |
52 |
53 |
55 |
56 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Pods.xcodeproj/xcuserdata/souvick.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | Pods-TinderProfile.xcscheme
8 |
9 | isShown
10 |
11 | orderHint
12 | 0
13 |
14 | PureLayout.xcscheme
15 |
16 | isShown
17 |
18 | orderHint
19 | 1
20 |
21 | SDWebImage.xcscheme
22 |
23 | isShown
24 |
25 | orderHint
26 | 2
27 |
28 |
29 | SuppressBuildableAutocreation
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/PureLayout/LICENSE:
--------------------------------------------------------------------------------
1 | This code is distributed under the terms and conditions of the MIT license.
2 |
3 | Copyright (c) 2014-2015 Tyler Fox
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6 |
7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
10 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/PureLayout/PureLayout/PureLayout/NSArray+PureLayout.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSArray+PureLayout.h
3 | // https://github.com/PureLayout/PureLayout
4 | //
5 | // Copyright (c) 2012 Richard Turton
6 | // Copyright (c) 2013-2015 Tyler Fox
7 | //
8 | // This code is distributed under the terms and conditions of the MIT license.
9 | //
10 | // Permission is hereby granted, free of charge, to any person obtaining a copy
11 | // of this software and associated documentation files (the "Software"), to
12 | // deal in the Software without restriction, including without limitation the
13 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
14 | // sell copies of the Software, and to permit persons to whom the Software is
15 | // furnished to do so, subject to the following conditions:
16 | //
17 | // The above copyright notice and this permission notice shall be included in
18 | // all copies or substantial portions of the Software.
19 | //
20 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
25 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
26 | // IN THE SOFTWARE.
27 | //
28 |
29 | #import "PureLayoutDefines.h"
30 |
31 |
32 | PL__ASSUME_NONNULL_BEGIN
33 |
34 | #pragma mark NSArray+PureLayout
35 |
36 | /**
37 | A category on NSArray that provides a simple yet powerful interface to:
38 | - Manage an array of Auto Layout constraints
39 | - Apply constraints to an array of views
40 | */
41 | @interface NSArray (PureLayout)
42 |
43 |
44 | #pragma mark Array of Constraints
45 |
46 | /** Activates the constraints in this array. */
47 | - (void)autoInstallConstraints;
48 |
49 | /** Deactivates the constraints in this array. */
50 | - (void)autoRemoveConstraints;
51 |
52 | #if PL__PureLayout_MinBaseSDK_iOS_8_0 || PL__PureLayout_MinBaseSDK_OSX_10_10
53 |
54 | /** Sets the string as the identifier for the constraints in this array. Available in iOS 7.0 and OS X 10.9 and later. */
55 | - (instancetype)autoIdentifyConstraints:(NSString *)identifier;
56 |
57 | #endif /* PL__PureLayout_MinBaseSDK_iOS_8_0 || PL__PureLayout_MinBaseSDK_OSX_10_10 */
58 |
59 |
60 | #pragma mark Array of Views
61 |
62 | /** Aligns views in this array to one another along a given edge. */
63 | - (PL__NSArray_of(NSLayoutConstraint *) *)autoAlignViewsToEdge:(ALEdge)edge;
64 |
65 | /** Aligns views in this array to one another along a given axis. */
66 | - (PL__NSArray_of(NSLayoutConstraint *) *)autoAlignViewsToAxis:(ALAxis)axis;
67 |
68 | /** Matches a given dimension of all the views in this array. */
69 | - (PL__NSArray_of(NSLayoutConstraint *) *)autoMatchViewsDimension:(ALDimension)dimension;
70 |
71 | /** Sets the given dimension of all the views in this array to a given size. */
72 | - (PL__NSArray_of(NSLayoutConstraint *) *)autoSetViewsDimension:(ALDimension)dimension toSize:(CGFloat)size;
73 |
74 | /** Sets all of the views in this array to a given size. */
75 | - (PL__NSArray_of(NSLayoutConstraint *) *)autoSetViewsDimensionsToSize:(CGSize)size;
76 |
77 |
78 | /** Distributes the views in this array equally along the selected axis in their superview.
79 | Views will be the same size (variable) in the dimension along the axis and will have spacing (fixed) between them. */
80 | - (PL__NSArray_of(NSLayoutConstraint *) *)autoDistributeViewsAlongAxis:(ALAxis)axis
81 | alignedTo:(ALAttribute)alignment
82 | withFixedSpacing:(CGFloat)spacing;
83 |
84 | /** Distributes the views in this array equally along the selected axis in their superview.
85 | Views will be the same size (variable) in the dimension along the axis and will have spacing (fixed) between them, with optional insets from the first and last views to their superview. */
86 | - (PL__NSArray_of(NSLayoutConstraint *) *)autoDistributeViewsAlongAxis:(ALAxis)axis
87 | alignedTo:(ALAttribute)alignment
88 | withFixedSpacing:(CGFloat)spacing
89 | insetSpacing:(BOOL)shouldSpaceInsets;
90 |
91 | /** Distributes the views in this array equally along the selected axis in their superview.
92 | Views will have spacing (fixed) between them, with optional insets from the first and last views to their superview, and optionally constrained to the same size in the dimension along the axis. */
93 | - (PL__NSArray_of(NSLayoutConstraint *) *)autoDistributeViewsAlongAxis:(ALAxis)axis
94 | alignedTo:(ALAttribute)alignment
95 | withFixedSpacing:(CGFloat)spacing
96 | insetSpacing:(BOOL)shouldSpaceInsets
97 | matchedSizes:(BOOL)shouldMatchSizes;
98 |
99 |
100 | /** Distributes the views in this array equally along the selected axis in their superview.
101 | Views will be the same size (fixed) in the dimension along the axis and will have spacing (variable) between them. */
102 | - (PL__NSArray_of(NSLayoutConstraint *) *)autoDistributeViewsAlongAxis:(ALAxis)axis
103 | alignedTo:(ALAttribute)alignment
104 | withFixedSize:(CGFloat)size;
105 |
106 | /** Distributes the views in this array equally along the selected axis in their superview.
107 | Views will be the same size (fixed) in the dimension along the axis and will have spacing (variable) between them, with optional insets from the first and last views to their superview. */
108 | - (PL__NSArray_of(NSLayoutConstraint *) *)autoDistributeViewsAlongAxis:(ALAxis)axis
109 | alignedTo:(ALAttribute)alignment
110 | withFixedSize:(CGFloat)size
111 | insetSpacing:(BOOL)shouldSpaceInsets;
112 |
113 | @end
114 |
115 | PL__ASSUME_NONNULL_END
116 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/PureLayout/PureLayout/PureLayout/NSLayoutConstraint+PureLayout.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSLayoutConstraint+PureLayout.h
3 | // https://github.com/PureLayout/PureLayout
4 | //
5 | // Copyright (c) 2013-2015 Tyler Fox
6 | //
7 | // This code is distributed under the terms and conditions of the MIT license.
8 | //
9 | // Permission is hereby granted, free of charge, to any person obtaining a copy
10 | // of this software and associated documentation files (the "Software"), to
11 | // deal in the Software without restriction, including without limitation the
12 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
13 | // sell copies of the Software, and to permit persons to whom the Software is
14 | // furnished to do so, subject to the following conditions:
15 | //
16 | // The above copyright notice and this permission notice shall be included in
17 | // all copies or substantial portions of the Software.
18 | //
19 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
25 | // IN THE SOFTWARE.
26 | //
27 |
28 | #import "PureLayoutDefines.h"
29 |
30 |
31 | PL__ASSUME_NONNULL_BEGIN
32 |
33 | #pragma mark NSLayoutConstraint+PureLayout
34 |
35 | /**
36 | A category on NSLayoutConstraint that allows constraints to be easily installed & removed.
37 | */
38 | @interface NSLayoutConstraint (PureLayout)
39 |
40 |
41 | #pragma mark Batch Constraint Creation
42 |
43 | /** Creates all of the constraints in the block, then installs (activates) them all at once.
44 | All constraints created from calls to the PureLayout API in the block are returned in a single array.
45 | This may be more efficient than installing (activating) each constraint one-by-one. */
46 | + (PL__NSArray_of(NSLayoutConstraint *) *)autoCreateAndInstallConstraints:(__attribute__((noescape)) ALConstraintsBlock)block;
47 |
48 | /** Creates all of the constraints in the block but prevents them from being automatically installed (activated).
49 | All constraints created from calls to the PureLayout API in the block are returned in a single array. */
50 | + (PL__NSArray_of(NSLayoutConstraint *) *)autoCreateConstraintsWithoutInstalling:(__attribute__((noescape)) ALConstraintsBlock)block;
51 |
52 |
53 | #pragma mark Set Priority For Constraints
54 |
55 | /** Sets the constraint priority to the given value for all constraints created using the PureLayout API within the given constraints block.
56 | NOTE: This method will have no effect (and will NOT set the priority) on constraints created or added without using the PureLayout API! */
57 | + (void)autoSetPriority:(ALLayoutPriority)priority forConstraints:(__attribute__((noescape)) ALConstraintsBlock)block;
58 |
59 |
60 | #pragma mark Identify Constraints
61 |
62 | #if PL__PureLayout_MinBaseSDK_iOS_8_0 || PL__PureLayout_MinBaseSDK_OSX_10_10
63 |
64 | /** Sets the identifier for all constraints created using the PureLayout API within the given constraints block.
65 | NOTE: This method will have no effect (and will NOT set the identifier) on constraints created or added without using the PureLayout API! */
66 | + (void)autoSetIdentifier:(NSString *)identifier forConstraints:(__attribute__((noescape)) ALConstraintsBlock)block;
67 |
68 | /** Sets the string as the identifier for this constraint. Available in iOS 7.0 and OS X 10.9 and later. */
69 | - (instancetype)autoIdentify:(NSString *)identifier;
70 |
71 | #endif /* PL__PureLayout_MinBaseSDK_iOS_8_0 || PL__PureLayout_MinBaseSDK_OSX_10_10 */
72 |
73 |
74 | #pragma mark Install & Remove Constraints
75 |
76 | /** Activates the the constraint. */
77 | - (void)autoInstall;
78 |
79 | /** Deactivates the constraint. */
80 | - (void)autoRemove;
81 |
82 | @end
83 |
84 | PL__ASSUME_NONNULL_END
85 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/PureLayout/PureLayout/PureLayout/PureLayout+Internal.h:
--------------------------------------------------------------------------------
1 | //
2 | // PureLayout+Internal.h
3 | // https://github.com/PureLayout/PureLayout
4 | //
5 | // Copyright (c) 2014-2015 Tyler Fox
6 | //
7 | // This code is distributed under the terms and conditions of the MIT license.
8 | //
9 | // Permission is hereby granted, free of charge, to any person obtaining a copy
10 | // of this software and associated documentation files (the "Software"), to
11 | // deal in the Software without restriction, including without limitation the
12 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
13 | // sell copies of the Software, and to permit persons to whom the Software is
14 | // furnished to do so, subject to the following conditions:
15 | //
16 | // The above copyright notice and this permission notice shall be included in
17 | // all copies or substantial portions of the Software.
18 | //
19 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
25 | // IN THE SOFTWARE.
26 | //
27 |
28 | #import "PureLayoutDefines.h"
29 |
30 |
31 | // Using generics with NSMutableArray is so common in the internal implementation of PureLayout that it gets a dedicated preprocessor macro for better readability.
32 | #define __NSMutableArray_of(type) PL__GENERICS(NSMutableArray, type)
33 |
34 | PL__ASSUME_NONNULL_BEGIN
35 |
36 | /** A constant that represents the smallest valid positive value for the multiplier of a constraint,
37 | since a value of 0 will cause the second item to be lost in the internal auto layout engine. */
38 | static const CGFloat kMULTIPLIER_MIN_VALUE = (CGFloat)0.00001; // very small floating point numbers (e.g. CGFLOAT_MIN) can cause problems
39 |
40 |
41 | /**
42 | A category that exposes the internal (private) helper methods of the ALView+PureLayout category.
43 | */
44 | @interface ALView (PureLayoutInternal)
45 |
46 | - (void)al_addConstraint:(NSLayoutConstraint *)constraint;
47 | - (ALView *)al_commonSuperviewWithView:(ALView *)otherView;
48 | - (NSLayoutConstraint *)al_alignAttribute:(ALAttribute)attribute toView:(ALView *)otherView forAxis:(ALAxis)axis;
49 |
50 | @end
51 |
52 |
53 | /**
54 | A category that exposes the internal (private) helper methods of the NSArray+PureLayout category.
55 | */
56 | @interface NSArray (PureLayoutInternal)
57 |
58 | - (ALView *)al_commonSuperviewOfViews;
59 | - (BOOL)al_containsMinimumNumberOfViews:(NSUInteger)minimumNumberOfViews;
60 | - (PL__NSArray_of(ALView *) *)al_copyViewsOnly;
61 |
62 | @end
63 |
64 |
65 | /**
66 | A category that exposes the internal (private) helper methods of the NSLayoutConstraint+PureLayout category.
67 | */
68 | @interface NSLayoutConstraint (PureLayoutInternal)
69 |
70 | + (BOOL)al_preventAutomaticConstraintInstallation;
71 | + (__NSMutableArray_of(NSLayoutConstraint *) *)al_currentArrayOfCreatedConstraints;
72 | + (BOOL)al_isExecutingPriorityConstraintsBlock;
73 | + (ALLayoutPriority)al_currentGlobalConstraintPriority;
74 | #if PL__PureLayout_MinBaseSDK_iOS_8_0 || PL__PureLayout_MinBaseSDK_OSX_10_10
75 | + (NSString *)al_currentGlobalConstraintIdentifier;
76 | #endif /* PL__PureLayout_MinBaseSDK_iOS_8_0 || PL__PureLayout_MinBaseSDK_OSX_10_10 */
77 | + (void)al_applyGlobalStateToConstraint:(NSLayoutConstraint *)constraint;
78 | + (NSLayoutAttribute)al_layoutAttributeForAttribute:(ALAttribute)attribute;
79 | + (ALLayoutConstraintAxis)al_constraintAxisForAxis:(ALAxis)axis;
80 | #if PL__PureLayout_MinBaseSDK_iOS_8_0
81 | + (ALMargin)al_marginForEdge:(ALEdge)edge;
82 | + (ALMarginAxis)al_marginAxisForAxis:(ALAxis)axis;
83 | #endif /* PL__PureLayout_MinBaseSDK_iOS_8_0 */
84 |
85 | @end
86 |
87 | PL__ASSUME_NONNULL_END
88 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/PureLayout/PureLayout/PureLayout/PureLayout.h:
--------------------------------------------------------------------------------
1 | //
2 | // PureLayout.h
3 | // https://github.com/PureLayout/PureLayout
4 | //
5 | // Copyright (c) 2014-2015 Tyler Fox
6 | //
7 | // This code is distributed under the terms and conditions of the MIT license.
8 | //
9 | // Permission is hereby granted, free of charge, to any person obtaining a copy
10 | // of this software and associated documentation files (the "Software"), to
11 | // deal in the Software without restriction, including without limitation the
12 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
13 | // sell copies of the Software, and to permit persons to whom the Software is
14 | // furnished to do so, subject to the following conditions:
15 | //
16 | // The above copyright notice and this permission notice shall be included in
17 | // all copies or substantial portions of the Software.
18 | //
19 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
25 | // IN THE SOFTWARE.
26 | //
27 |
28 | #ifndef PureLayout_h
29 | #define PureLayout_h
30 |
31 | #import
32 |
33 | //! Project version number for PureLayout.
34 | FOUNDATION_EXPORT double PureLayoutVersionNumber;
35 |
36 | //! Project version string for PureLayout.
37 | FOUNDATION_EXPORT const unsigned char PureLayoutVersionString[];
38 |
39 | #import "ALView+PureLayout.h"
40 | #import "NSArray+PureLayout.h"
41 | #import "NSLayoutConstraint+PureLayout.h"
42 |
43 | #endif /* PureLayout_h */
44 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2009-2017 Olivier Poitrey rs@dailymotion.com
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is furnished
8 | to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in all
11 | copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
21 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | [](https://travis-ci.org/rs/SDWebImage)
7 | [](http://cocoadocs.org/docsets/SDWebImage/)
8 | [](http://cocoadocs.org/docsets/SDWebImage/)
9 | [](https://www.apache.org/licenses/LICENSE-2.0.html)
10 | [](https://www.versioneye.com/objective-c/sdwebimage)
11 | [](https://www.versioneye.com/objective-c/sdwebimage/references)
12 | [](https://github.com/rs/SDWebImage)
13 | [](https://codecov.io/gh/rs/SDWebImage)
14 |
15 | This library provides an async image downloader with cache support. For convenience, we added categories for UI elements like `UIImageView`, `UIButton`, `MKAnnotationView`.
16 |
17 | ## Features
18 |
19 | - [x] Categories for `UIImageView`, `UIButton`, `MKAnnotationView` adding web image and cache management
20 | - [x] An asynchronous image downloader
21 | - [x] An asynchronous memory + disk image caching with automatic cache expiration handling
22 | - [x] A background image decompression
23 | - [x] A guarantee that the same URL won't be downloaded several times
24 | - [x] A guarantee that bogus URLs won't be retried again and again
25 | - [x] A guarantee that main thread will never be blocked
26 | - [x] Performances!
27 | - [x] Use GCD and ARC
28 |
29 | ## Supported Image Formats
30 |
31 | - Image formats supported by UIImage (JPEG, PNG, ...), including GIF
32 | - WebP format, including animated WebP (use the `WebP` subspec)
33 |
34 | ## Requirements
35 |
36 | - iOS 7.0 or later
37 | - tvOS 9.0 or later
38 | - watchOS 2.0 or later
39 | - macOS 10.9 or later
40 | - Xcode 7.3 or later
41 |
42 | #### Backwards compatibility
43 |
44 | - For iOS 5 and 6, use [any 3.x version up to 3.7.6](https://github.com/rs/SDWebImage/tree/3.7.6)
45 | - For iOS < 5.0, please use the last [2.0 version](https://github.com/rs/SDWebImage/tree/2.0-compat).
46 |
47 | ## Getting Started
48 |
49 | - Read this Readme doc
50 | - Read the [How to use section](https://github.com/rs/SDWebImage#how-to-use)
51 | - Read the [Documentation @ CocoaDocs](http://cocoadocs.org/docsets/SDWebImage/)
52 | - Try the example by downloading the project from Github or even easier using CocoaPods try `pod try SDWebImage`
53 | - Read the [Installation Guide](https://github.com/rs/SDWebImage/wiki/Installation-Guide)
54 | - Read the [SDWebImage 4.0 Migration Guide](Docs/SDWebImage-4.0-Migration-guide.md) to get an idea of the changes from 3.x to 4.x
55 | - Read the [Common Problems](https://github.com/rs/SDWebImage/wiki/Common-Problems) to find the solution for common problems
56 | - Go to the [Wiki Page](https://github.com/rs/SDWebImage/wiki) for more information such as [Advanced Usage](https://github.com/rs/SDWebImage/wiki/Advanced-Usage)
57 |
58 | ## Who Uses It
59 | - Find out [who uses SDWebImage](https://github.com/rs/SDWebImage/wiki/Who-Uses-SDWebImage) and add your app to the list.
60 |
61 | ## Communication
62 |
63 | - If you **need help**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/sdwebimage). (Tag 'sdwebimage')
64 | - If you'd like to **ask a general question**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/sdwebimage).
65 | - If you **found a bug**, open an issue.
66 | - If you **have a feature request**, open an issue.
67 | - If you **want to contribute**, submit a pull request.
68 |
69 | ## How To Use
70 |
71 | * Objective-C
72 |
73 | ```objective-c
74 | #import
75 | ...
76 | [imageView sd_setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
77 | placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
78 | ```
79 |
80 | * Swift
81 |
82 | ```swift
83 | import SDWebImage
84 |
85 | imageView.sd_setImage(with: URL(string: "http://www.domain.com/path/to/image.jpg"), placeholderImage: UIImage(named: "placeholder.png"))
86 | ```
87 |
88 | - For details about how to use the library and clear examples, see [The detailed How to use](Docs/HowToUse.md)
89 |
90 | ## Animated Images (GIF) support
91 |
92 | - Starting with the 4.0 version, we rely on [FLAnimatedImage](https://github.com/Flipboard/FLAnimatedImage) to take care of our animated images.
93 | - If you use cocoapods, add `pod 'SDWebImage/GIF'` to your podfile.
94 | - To use it, simply make sure you use `FLAnimatedImageView` instead of `UIImageView`.
95 | - **Note**: there is a backwards compatible feature, so if you are still trying to load a GIF into a `UIImageView`, it will only show the 1st frame as a static image by default. However, you can enable the full GIF support by using the built-in GIF coder. See [GIF coder](https://github.com/rs/SDWebImage/wiki/Advanced-Usage#gif-coder)
96 | - **Important**: FLAnimatedImage only works on the iOS platform. For macOS, use `NSImageView` with `animates` set to `YES` to show the entire animated images and `NO` to only show the 1st frame. For all the other platforms (tvOS, watchOS) we will fallback to the backwards compatibility feature described above
97 |
98 | ## Installation
99 |
100 | There are three ways to use SDWebImage in your project:
101 | - using CocoaPods
102 | - using Carthage
103 | - by cloning the project into your repository
104 |
105 | ### Installation with CocoaPods
106 |
107 | [CocoaPods](http://cocoapods.org/) is a dependency manager for Objective-C, which automates and simplifies the process of using 3rd-party libraries in your projects. See the [Get Started](http://cocoapods.org/#get_started) section for more details.
108 |
109 | #### Podfile
110 | ```
111 | platform :ios, '7.0'
112 | pod 'SDWebImage', '~> 4.0'
113 | ```
114 |
115 | If you are using Swift, be sure to add `use_frameworks!` and set your target to iOS 8+:
116 | ```
117 | platform :ios, '8.0'
118 | use_frameworks!
119 | ```
120 |
121 | #### Subspecs
122 |
123 | There are 4 subspecs available now: `Core`, `MapKit`, `GIF` and `WebP` (this means you can install only some of the SDWebImage modules. By default, you get just `Core`, so if you need `WebP`, you need to specify it).
124 |
125 | Podfile example:
126 | ```
127 | pod 'SDWebImage/WebP'
128 | ```
129 |
130 | ### Installation with Carthage (iOS 8+)
131 |
132 | [Carthage](https://github.com/Carthage/Carthage) is a lightweight dependency manager for Swift and Objective-C. It leverages CocoaTouch modules and is less invasive than CocoaPods.
133 |
134 | To install with carthage, follow the instruction on [Carthage](https://github.com/Carthage/Carthage)
135 |
136 | #### Cartfile
137 | ```
138 | github "rs/SDWebImage"
139 | ```
140 |
141 | ### Installation by cloning the repository
142 | - see [Manual install](Docs/ManualInstallation.md)
143 |
144 | ### Import headers in your source files
145 |
146 | In the source files where you need to use the library, import the header file:
147 |
148 | ```objective-c
149 | #import
150 | ```
151 |
152 | ### Build Project
153 |
154 | At this point your workspace should build without error. If you are having problem, post to the Issue and the
155 | community can help you solve it.
156 |
157 | ## Author
158 | - [Olivier Poitrey](https://github.com/rs)
159 |
160 | ## Collaborators
161 | - [Konstantinos K.](https://github.com/mythodeia)
162 | - [Bogdan Poplauschi](https://github.com/bpoplauschi)
163 | - [Chester Liu](https://github.com/skyline75489)
164 | - [DreamPiggy](https://github.com/dreampiggy)
165 |
166 | ## Licenses
167 |
168 | All source code is licensed under the [MIT License](https://raw.github.com/rs/SDWebImage/master/LICENSE).
169 |
170 | ## Architecture
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/NSButton+WebCache.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "NSButton+WebCache.h"
10 |
11 | #if SD_MAC
12 |
13 | #import "objc/runtime.h"
14 | #import "UIView+WebCacheOperation.h"
15 | #import "UIView+WebCache.h"
16 |
17 | static inline NSString * imageOperationKey() {
18 | return @"NSButtonImageOperation";
19 | }
20 |
21 | static inline NSString * alternateImageOperationKey() {
22 | return @"NSButtonAlternateImageOperation";
23 | }
24 |
25 | @implementation NSButton (WebCache)
26 |
27 | #pragma mark - Image
28 |
29 | - (void)sd_setImageWithURL:(nullable NSURL *)url {
30 | [self sd_setImageWithURL:url placeholderImage:nil options:0 progress:nil completed:nil];
31 | }
32 |
33 | - (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder {
34 | [self sd_setImageWithURL:url placeholderImage:placeholder options:0 progress:nil completed:nil];
35 | }
36 |
37 | - (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options {
38 | [self sd_setImageWithURL:url placeholderImage:placeholder options:options progress:nil completed:nil];
39 | }
40 |
41 | - (void)sd_setImageWithURL:(nullable NSURL *)url completed:(nullable SDExternalCompletionBlock)completedBlock {
42 | [self sd_setImageWithURL:url placeholderImage:nil options:0 progress:nil completed:completedBlock];
43 | }
44 |
45 | - (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder completed:(nullable SDExternalCompletionBlock)completedBlock {
46 | [self sd_setImageWithURL:url placeholderImage:placeholder options:0 progress:nil completed:completedBlock];
47 | }
48 |
49 | - (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options completed:(nullable SDExternalCompletionBlock)completedBlock {
50 | [self sd_setImageWithURL:url placeholderImage:placeholder options:options progress:nil completed:completedBlock];
51 | }
52 |
53 | - (void)sd_setImageWithURL:(nullable NSURL *)url
54 | placeholderImage:(nullable UIImage *)placeholder
55 | options:(SDWebImageOptions)options
56 | progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
57 | completed:(nullable SDExternalCompletionBlock)completedBlock {
58 | self.sd_currentImageURL = url;
59 |
60 | __weak typeof(self)weakSelf = self;
61 | [self sd_internalSetImageWithURL:url
62 | placeholderImage:placeholder
63 | options:options
64 | operationKey:imageOperationKey()
65 | setImageBlock:^(NSImage * _Nullable image, NSData * _Nullable imageData) {
66 | weakSelf.image = image;
67 | }
68 | progress:progressBlock
69 | completed:completedBlock];
70 | }
71 |
72 | #pragma mark - Alternate Image
73 |
74 | - (void)sd_setAlternateImageWithURL:(nullable NSURL *)url {
75 | [self sd_setAlternateImageWithURL:url placeholderImage:nil options:0 progress:nil completed:nil];
76 | }
77 |
78 | - (void)sd_setAlternateImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder {
79 | [self sd_setAlternateImageWithURL:url placeholderImage:placeholder options:0 progress:nil completed:nil];
80 | }
81 |
82 | - (void)sd_setAlternateImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options {
83 | [self sd_setAlternateImageWithURL:url placeholderImage:placeholder options:options progress:nil completed:nil];
84 | }
85 |
86 | - (void)sd_setAlternateImageWithURL:(nullable NSURL *)url completed:(nullable SDExternalCompletionBlock)completedBlock {
87 | [self sd_setAlternateImageWithURL:url placeholderImage:nil options:0 progress:nil completed:completedBlock];
88 | }
89 |
90 | - (void)sd_setAlternateImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder completed:(nullable SDExternalCompletionBlock)completedBlock {
91 | [self sd_setAlternateImageWithURL:url placeholderImage:placeholder options:0 progress:nil completed:completedBlock];
92 | }
93 |
94 | - (void)sd_setAlternateImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options completed:(nullable SDExternalCompletionBlock)completedBlock {
95 | [self sd_setAlternateImageWithURL:url placeholderImage:placeholder options:options progress:nil completed:completedBlock];
96 | }
97 |
98 | - (void)sd_setAlternateImageWithURL:(nullable NSURL *)url
99 | placeholderImage:(nullable UIImage *)placeholder
100 | options:(SDWebImageOptions)options
101 | progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
102 | completed:(nullable SDExternalCompletionBlock)completedBlock {
103 | self.sd_currentAlternateImageURL = url;
104 |
105 | __weak typeof(self)weakSelf = self;
106 | [self sd_internalSetImageWithURL:url
107 | placeholderImage:placeholder
108 | options:options
109 | operationKey:alternateImageOperationKey()
110 | setImageBlock:^(NSImage * _Nullable image, NSData * _Nullable imageData) {
111 | weakSelf.alternateImage = image;
112 | }
113 | progress:progressBlock
114 | completed:completedBlock];
115 | }
116 |
117 | #pragma mark - Cancel
118 |
119 | - (void)sd_cancelCurrentImageLoad {
120 | [self sd_cancelImageLoadOperationWithKey:imageOperationKey()];
121 | }
122 |
123 | - (void)sd_cancelCurrentAlternateImageLoad {
124 | [self sd_cancelImageLoadOperationWithKey:alternateImageOperationKey()];
125 | }
126 |
127 | #pragma mar - Private
128 |
129 | - (NSURL *)sd_currentImageURL {
130 | return objc_getAssociatedObject(self, @selector(sd_currentImageURL));
131 | }
132 |
133 | - (void)setSd_currentImageURL:(NSURL *)sd_currentImageURL {
134 | objc_setAssociatedObject(self, @selector(sd_currentImageURL), sd_currentImageURL, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
135 | }
136 |
137 | - (NSURL *)sd_currentAlternateImageURL {
138 | return objc_getAssociatedObject(self, @selector(sd_currentAlternateImageURL));
139 | }
140 |
141 | - (void)setSd_currentAlternateImageURL:(NSURL *)sd_currentAlternateImageURL {
142 | objc_setAssociatedObject(self, @selector(sd_currentAlternateImageURL), sd_currentAlternateImageURL, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
143 | }
144 |
145 | @end
146 |
147 | #endif
148 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/NSData+ImageContentType.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Fabrice Aneche
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import
11 | #import "SDWebImageCompat.h"
12 |
13 | typedef NS_ENUM(NSInteger, SDImageFormat) {
14 | SDImageFormatUndefined = -1,
15 | SDImageFormatJPEG = 0,
16 | SDImageFormatPNG,
17 | SDImageFormatGIF,
18 | SDImageFormatTIFF,
19 | SDImageFormatWebP,
20 | SDImageFormatHEIC
21 | };
22 |
23 | @interface NSData (ImageContentType)
24 |
25 | /**
26 | * Return image format
27 | *
28 | * @param data the input image data
29 | *
30 | * @return the image format as `SDImageFormat` (enum)
31 | */
32 | + (SDImageFormat)sd_imageFormatForImageData:(nullable NSData *)data;
33 |
34 | /**
35 | Convert SDImageFormat to UTType
36 |
37 | @param format Format as SDImageFormat
38 | @return The UTType as CFStringRef
39 | */
40 | + (nonnull CFStringRef)sd_UTTypeFromSDImageFormat:(SDImageFormat)format;
41 |
42 | @end
43 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/NSData+ImageContentType.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Fabrice Aneche
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import "NSData+ImageContentType.h"
11 | #if SD_MAC
12 | #import
13 | #else
14 | #import
15 | #endif
16 |
17 | // Currently Image/IO does not support WebP
18 | #define kSDUTTypeWebP ((__bridge CFStringRef)@"public.webp")
19 | // AVFileTypeHEIC is defined in AVFoundation via iOS 11, we use this without import AVFoundation
20 | #define kSDUTTypeHEIC ((__bridge CFStringRef)@"public.heic")
21 |
22 | @implementation NSData (ImageContentType)
23 |
24 | + (SDImageFormat)sd_imageFormatForImageData:(nullable NSData *)data {
25 | if (!data) {
26 | return SDImageFormatUndefined;
27 | }
28 |
29 | // File signatures table: http://www.garykessler.net/library/file_sigs.html
30 | uint8_t c;
31 | [data getBytes:&c length:1];
32 | switch (c) {
33 | case 0xFF:
34 | return SDImageFormatJPEG;
35 | case 0x89:
36 | return SDImageFormatPNG;
37 | case 0x47:
38 | return SDImageFormatGIF;
39 | case 0x49:
40 | case 0x4D:
41 | return SDImageFormatTIFF;
42 | case 0x52: {
43 | if (data.length >= 12) {
44 | //RIFF....WEBP
45 | NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding];
46 | if ([testString hasPrefix:@"RIFF"] && [testString hasSuffix:@"WEBP"]) {
47 | return SDImageFormatWebP;
48 | }
49 | }
50 | break;
51 | }
52 | case 0x00: {
53 | if (data.length >= 12) {
54 | //....ftypheic ....ftypheix ....ftyphevc ....ftyphevx
55 | NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(4, 8)] encoding:NSASCIIStringEncoding];
56 | if ([testString isEqualToString:@"ftypheic"]
57 | || [testString isEqualToString:@"ftypheix"]
58 | || [testString isEqualToString:@"ftyphevc"]
59 | || [testString isEqualToString:@"ftyphevx"]) {
60 | return SDImageFormatHEIC;
61 | }
62 | }
63 | break;
64 | }
65 | }
66 | return SDImageFormatUndefined;
67 | }
68 |
69 | + (nonnull CFStringRef)sd_UTTypeFromSDImageFormat:(SDImageFormat)format {
70 | CFStringRef UTType;
71 | switch (format) {
72 | case SDImageFormatJPEG:
73 | UTType = kUTTypeJPEG;
74 | break;
75 | case SDImageFormatPNG:
76 | UTType = kUTTypePNG;
77 | break;
78 | case SDImageFormatGIF:
79 | UTType = kUTTypeGIF;
80 | break;
81 | case SDImageFormatTIFF:
82 | UTType = kUTTypeTIFF;
83 | break;
84 | case SDImageFormatWebP:
85 | UTType = kSDUTTypeWebP;
86 | break;
87 | case SDImageFormatHEIC:
88 | UTType = kSDUTTypeHEIC;
89 | break;
90 | default:
91 | // default is kUTTypePNG
92 | UTType = kUTTypePNG;
93 | break;
94 | }
95 | return UTType;
96 | }
97 |
98 | @end
99 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/NSImage+WebCache.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | #if SD_MAC
12 |
13 | #import
14 |
15 | @interface NSImage (WebCache)
16 |
17 | - (CGImageRef)CGImage;
18 | - (NSArray *)images;
19 | - (BOOL)isGIF;
20 |
21 | @end
22 |
23 | #endif
24 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/NSImage+WebCache.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "NSImage+WebCache.h"
10 |
11 | #if SD_MAC
12 |
13 | @implementation NSImage (WebCache)
14 |
15 | - (CGImageRef)CGImage {
16 | NSRect imageRect = NSMakeRect(0, 0, self.size.width, self.size.height);
17 | CGImageRef cgImage = [self CGImageForProposedRect:&imageRect context:NULL hints:nil];
18 | return cgImage;
19 | }
20 |
21 | - (NSArray *)images {
22 | return nil;
23 | }
24 |
25 | - (BOOL)isGIF {
26 | BOOL isGIF = NO;
27 | for (NSImageRep *rep in self.representations) {
28 | if ([rep isKindOfClass:[NSBitmapImageRep class]]) {
29 | NSBitmapImageRep *bitmapRep = (NSBitmapImageRep *)rep;
30 | NSUInteger frameCount = [[bitmapRep valueForProperty:NSImageFrameCount] unsignedIntegerValue];
31 | isGIF = frameCount > 1 ? YES : NO;
32 | break;
33 | }
34 | }
35 | return isGIF;
36 | }
37 |
38 | @end
39 |
40 | #endif
41 |
42 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/SDAnimatedImageRep.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | #if SD_MAC
12 |
13 | // A subclass of `NSBitmapImageRep` to fix that GIF loop count issue because `NSBitmapImageRep` will reset `NSImageCurrentFrameDuration` by using `kCGImagePropertyGIFDelayTime` but not `kCGImagePropertyGIFUnclampedDelayTime`.
14 | // Built in GIF coder use this instead of `NSBitmapImageRep` for better GIF rendering. If you do not want this, only enable `SDWebImageImageIOCoder`, which just call `NSImage` API and actually use `NSBitmapImageRep` for GIF image.
15 |
16 | @interface SDAnimatedImageRep : NSBitmapImageRep
17 |
18 | @end
19 |
20 | #endif
21 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/SDAnimatedImageRep.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDAnimatedImageRep.h"
10 |
11 | #if SD_MAC
12 |
13 | #import "SDWebImageGIFCoder.h"
14 |
15 | @interface SDWebImageGIFCoder ()
16 |
17 | - (float)sd_frameDurationAtIndex:(NSUInteger)index source:(CGImageSourceRef)source;
18 |
19 | @end
20 |
21 | @interface SDAnimatedImageRep ()
22 |
23 | @property (nonatomic, assign, readonly, nullable) CGImageSourceRef imageSource;
24 |
25 | @end
26 |
27 | @implementation SDAnimatedImageRep
28 |
29 | // `NSBitmapImageRep` will use `kCGImagePropertyGIFDelayTime` whenever you call `setProperty:withValue:` with `NSImageCurrentFrame` to change the current frame. We override it and use the actual `kCGImagePropertyGIFUnclampedDelayTime` if need.
30 | - (void)setProperty:(NSBitmapImageRepPropertyKey)property withValue:(id)value {
31 | [super setProperty:property withValue:value];
32 | if ([property isEqualToString:NSImageCurrentFrame]) {
33 | // Access the image source
34 | CGImageSourceRef imageSource = self.imageSource;
35 | if (!imageSource) {
36 | return;
37 | }
38 | // Check format type
39 | CFStringRef type = CGImageSourceGetType(imageSource);
40 | if (!type) {
41 | return;
42 | }
43 | NSUInteger index = [value unsignedIntegerValue];
44 | float frameDuration = 0;
45 | // Through we currently process GIF only, in the 5.x we support APNG so we keep the extensibility
46 | if (CFStringCompare(type, kUTTypeGIF, 0) == kCFCompareEqualTo) {
47 | frameDuration = [[SDWebImageGIFCoder sharedCoder] sd_frameDurationAtIndex:index source:imageSource];
48 | }
49 | if (!frameDuration) {
50 | return;
51 | }
52 | // Reset super frame duration with the actual frame duration
53 | [super setProperty:NSImageCurrentFrameDuration withValue:@(frameDuration)];
54 | }
55 | }
56 |
57 | - (CGImageSourceRef)imageSource {
58 | if (_tiffData) {
59 | return (__bridge CGImageSourceRef)(_tiffData);
60 | }
61 | return NULL;
62 | }
63 |
64 | @end
65 |
66 | #endif
67 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/SDImageCacheConfig.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCompat.h"
11 |
12 | @interface SDImageCacheConfig : NSObject
13 |
14 | /**
15 | * Decompressing images that are downloaded and cached can improve performance but can consume lot of memory.
16 | * Defaults to YES. Set this to NO if you are experiencing a crash due to excessive memory consumption.
17 | */
18 | @property (assign, nonatomic) BOOL shouldDecompressImages;
19 |
20 | /**
21 | * disable iCloud backup [defaults to YES]
22 | */
23 | @property (assign, nonatomic) BOOL shouldDisableiCloud;
24 |
25 | /**
26 | * use memory cache [defaults to YES]
27 | */
28 | @property (assign, nonatomic) BOOL shouldCacheImagesInMemory;
29 |
30 | /**
31 | * The reading options while reading cache from disk.
32 | * Defaults to 0. You can set this to `NSDataReadingMappedIfSafe` to improve performance.
33 | */
34 | @property (assign, nonatomic) NSDataReadingOptions diskCacheReadingOptions;
35 |
36 | /**
37 | * The writing options while writing cache to disk.
38 | * Defaults to `NSDataWritingAtomic`. You can set this to `NSDataWritingWithoutOverwriting` to prevent overwriting an existing file.
39 | */
40 | @property (assign, nonatomic) NSDataWritingOptions diskCacheWritingOptions;
41 |
42 | /**
43 | * The maximum length of time to keep an image in the cache, in seconds.
44 | */
45 | @property (assign, nonatomic) NSInteger maxCacheAge;
46 |
47 | /**
48 | * The maximum size of the cache, in bytes.
49 | */
50 | @property (assign, nonatomic) NSUInteger maxCacheSize;
51 |
52 | @end
53 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/SDImageCacheConfig.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDImageCacheConfig.h"
10 |
11 | static const NSInteger kDefaultCacheMaxCacheAge = 60 * 60 * 24 * 7; // 1 week
12 |
13 | @implementation SDImageCacheConfig
14 |
15 | - (instancetype)init {
16 | if (self = [super init]) {
17 | _shouldDecompressImages = YES;
18 | _shouldDisableiCloud = YES;
19 | _shouldCacheImagesInMemory = YES;
20 | _diskCacheReadingOptions = 0;
21 | _diskCacheWritingOptions = NSDataWritingAtomic;
22 | _maxCacheAge = kDefaultCacheMaxCacheAge;
23 | _maxCacheSize = 0;
24 | }
25 | return self;
26 | }
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/SDWebImageCoder.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCompat.h"
11 | #import "NSData+ImageContentType.h"
12 |
13 | /**
14 | A Boolean value indicating whether to scale down large images during decompressing. (NSNumber)
15 | */
16 | FOUNDATION_EXPORT NSString * _Nonnull const SDWebImageCoderScaleDownLargeImagesKey;
17 |
18 | /**
19 | Return the shared device-dependent RGB color space created with CGColorSpaceCreateDeviceRGB.
20 |
21 | @return The device-dependent RGB color space
22 | */
23 | CG_EXTERN CGColorSpaceRef _Nonnull SDCGColorSpaceGetDeviceRGB(void);
24 |
25 | /**
26 | Check whether CGImageRef contains alpha channel.
27 |
28 | @param imageRef The CGImageRef
29 | @return Return YES if CGImageRef contains alpha channel, otherwise return NO
30 | */
31 | CG_EXTERN BOOL SDCGImageRefContainsAlpha(_Nullable CGImageRef imageRef);
32 |
33 |
34 | /**
35 | This is the image coder protocol to provide custom image decoding/encoding.
36 | These methods are all required to implement.
37 | @note Pay attention that these methods are not called from main queue.
38 | */
39 | @protocol SDWebImageCoder
40 |
41 | @required
42 | #pragma mark - Decoding
43 | /**
44 | Returns YES if this coder can decode some data. Otherwise, the data should be passed to another coder.
45 |
46 | @param data The image data so we can look at it
47 | @return YES if this coder can decode the data, NO otherwise
48 | */
49 | - (BOOL)canDecodeFromData:(nullable NSData *)data;
50 |
51 | /**
52 | Decode the image data to image.
53 |
54 | @param data The image data to be decoded
55 | @return The decoded image from data
56 | */
57 | - (nullable UIImage *)decodedImageWithData:(nullable NSData *)data;
58 |
59 | /**
60 | Decompress the image with original image and image data.
61 |
62 | @param image The original image to be decompressed
63 | @param data The pointer to original image data. The pointer itself is nonnull but image data can be null. This data will set to cache if needed. If you do not need to modify data at the sametime, ignore this param.
64 | @param optionsDict A dictionary containing any decompressing options. Pass {SDWebImageCoderScaleDownLargeImagesKey: @(YES)} to scale down large images
65 | @return The decompressed image
66 | */
67 | - (nullable UIImage *)decompressedImageWithImage:(nullable UIImage *)image
68 | data:(NSData * _Nullable * _Nonnull)data
69 | options:(nullable NSDictionary*)optionsDict;
70 |
71 | #pragma mark - Encoding
72 |
73 | /**
74 | Returns YES if this coder can encode some image. Otherwise, it should be passed to another coder.
75 |
76 | @param format The image format
77 | @return YES if this coder can encode the image, NO otherwise
78 | */
79 | - (BOOL)canEncodeToFormat:(SDImageFormat)format;
80 |
81 | /**
82 | Encode the image to image data.
83 |
84 | @param image The image to be encoded
85 | @param format The image format to encode, you should note `SDImageFormatUndefined` format is also possible
86 | @return The encoded image data
87 | */
88 | - (nullable NSData *)encodedDataWithImage:(nullable UIImage *)image format:(SDImageFormat)format;
89 |
90 | @end
91 |
92 |
93 | /**
94 | This is the image coder protocol to provide custom progressive image decoding.
95 | These methods are all required to implement.
96 | @note Pay attention that these methods are not called from main queue.
97 | */
98 | @protocol SDWebImageProgressiveCoder
99 |
100 | @required
101 | /**
102 | Returns YES if this coder can incremental decode some data. Otherwise, it should be passed to another coder.
103 |
104 | @param data The image data so we can look at it
105 | @return YES if this coder can decode the data, NO otherwise
106 | */
107 | - (BOOL)canIncrementallyDecodeFromData:(nullable NSData *)data;
108 |
109 | /**
110 | Incremental decode the image data to image.
111 |
112 | @param data The image data has been downloaded so far
113 | @param finished Whether the download has finished
114 | @warning because incremental decoding need to keep the decoded context, we will alloc a new instance with the same class for each download operation to avoid conflicts
115 | @return The decoded image from data
116 | */
117 | - (nullable UIImage *)incrementallyDecodedImageWithData:(nullable NSData *)data finished:(BOOL)finished;
118 |
119 | @end
120 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/SDWebImageCoder.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCoder.h"
10 |
11 | NSString * const SDWebImageCoderScaleDownLargeImagesKey = @"scaleDownLargeImages";
12 |
13 | CGColorSpaceRef SDCGColorSpaceGetDeviceRGB(void) {
14 | static CGColorSpaceRef colorSpace;
15 | static dispatch_once_t onceToken;
16 | dispatch_once(&onceToken, ^{
17 | colorSpace = CGColorSpaceCreateDeviceRGB();
18 | });
19 | return colorSpace;
20 | }
21 |
22 | BOOL SDCGImageRefContainsAlpha(CGImageRef imageRef) {
23 | if (!imageRef) {
24 | return NO;
25 | }
26 | CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(imageRef);
27 | BOOL hasAlpha = !(alphaInfo == kCGImageAlphaNone ||
28 | alphaInfo == kCGImageAlphaNoneSkipFirst ||
29 | alphaInfo == kCGImageAlphaNoneSkipLast);
30 | return hasAlpha;
31 | }
32 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/SDWebImageCoderHelper.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCompat.h"
11 | #import "SDWebImageFrame.h"
12 |
13 | @interface SDWebImageCoderHelper : NSObject
14 |
15 | /**
16 | Return an animated image with frames array.
17 | For UIKit, this will apply the patch and then create animated UIImage. The patch is because that `+[UIImage animatedImageWithImages:duration:]` just use the average of duration for each image. So it will not work if different frame has different duration. Therefore we repeat the specify frame for specify times to let it work.
18 | For AppKit, NSImage does not support animates other than GIF. This will try to encode the frames to GIF format and then create an animated NSImage for rendering. Attention the animated image may loss some detail if the input frames contain full alpha channel because GIF only supports 1 bit alpha channel. (For 1 pixel, either transparent or not)
19 |
20 | @param frames The frames array. If no frames or frames is empty, return nil
21 | @return A animated image for rendering on UIImageView(UIKit) or NSImageView(AppKit)
22 | */
23 | + (UIImage * _Nullable)animatedImageWithFrames:(NSArray * _Nullable)frames;
24 |
25 | /**
26 | Return frames array from an animated image.
27 | For UIKit, this will unapply the patch for the description above and then create frames array. This will also work for normal animated UIImage.
28 | For AppKit, NSImage does not support animates other than GIF. This will try to decode the GIF imageRep and then create frames array.
29 |
30 | @param animatedImage A animated image. If it's not animated, return nil
31 | @return The frames array
32 | */
33 | + (NSArray * _Nullable)framesFromAnimatedImage:(UIImage * _Nullable)animatedImage;
34 |
35 | #if SD_UIKIT || SD_WATCH
36 | /**
37 | Convert an EXIF image orientation to an iOS one.
38 |
39 | @param exifOrientation EXIF orientation
40 | @return iOS orientation
41 | */
42 | + (UIImageOrientation)imageOrientationFromEXIFOrientation:(NSInteger)exifOrientation;
43 | /**
44 | Convert an iOS orientation to an EXIF image orientation.
45 |
46 | @param imageOrientation iOS orientation
47 | @return EXIF orientation
48 | */
49 | + (NSInteger)exifOrientationFromImageOrientation:(UIImageOrientation)imageOrientation;
50 | #endif
51 |
52 | @end
53 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/SDWebImageCodersManager.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCoder.h"
11 |
12 | /**
13 | Global object holding the array of coders, so that we avoid passing them from object to object.
14 | Uses a priority queue behind scenes, which means the latest added coders have the highest priority.
15 | This is done so when encoding/decoding something, we go through the list and ask each coder if they can handle the current data.
16 | That way, users can add their custom coders while preserving our existing prebuilt ones
17 |
18 | Note: the `coders` getter will return the coders in their reversed order
19 | Example:
20 | - by default we internally set coders = `IOCoder`, `WebPCoder`. (`GIFCoder` is not recommended to add only if you want to get GIF support without `FLAnimatedImage`)
21 | - calling `coders` will return `@[WebPCoder, IOCoder]`
22 | - call `[addCoder:[MyCrazyCoder new]]`
23 | - calling `coders` now returns `@[MyCrazyCoder, WebPCoder, IOCoder]`
24 |
25 | Coders
26 | ------
27 | A coder must conform to the `SDWebImageCoder` protocol or even to `SDWebImageProgressiveCoder` if it supports progressive decoding
28 | Conformance is important because that way, they will implement `canDecodeFromData` or `canEncodeToFormat`
29 | Those methods are called on each coder in the array (using the priority order) until one of them returns YES.
30 | That means that coder can decode that data / encode to that format
31 | */
32 | @interface SDWebImageCodersManager : NSObject
33 |
34 | /**
35 | Shared reusable instance
36 | */
37 | + (nonnull instancetype)sharedInstance;
38 |
39 | /**
40 | All coders in coders manager. The coders array is a priority queue, which means the later added coder will have the highest priority
41 | */
42 | @property (nonatomic, strong, readwrite, nullable) NSArray* coders;
43 |
44 | /**
45 | Add a new coder to the end of coders array. Which has the highest priority.
46 |
47 | @param coder coder
48 | */
49 | - (void)addCoder:(nonnull id)coder;
50 |
51 | /**
52 | Remove a coder in the coders array.
53 |
54 | @param coder coder
55 | */
56 | - (void)removeCoder:(nonnull id)coder;
57 |
58 | @end
59 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/SDWebImageCodersManager.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCodersManager.h"
10 | #import "SDWebImageImageIOCoder.h"
11 | #import "SDWebImageGIFCoder.h"
12 | #ifdef SD_WEBP
13 | #import "SDWebImageWebPCoder.h"
14 | #endif
15 |
16 | @interface SDWebImageCodersManager ()
17 |
18 | @property (strong, nonatomic, nonnull) NSMutableArray* mutableCoders;
19 | @property (strong, nonatomic, nullable) dispatch_queue_t mutableCodersAccessQueue;
20 |
21 | @end
22 |
23 | @implementation SDWebImageCodersManager
24 |
25 | + (nonnull instancetype)sharedInstance {
26 | static dispatch_once_t once;
27 | static id instance;
28 | dispatch_once(&once, ^{
29 | instance = [self new];
30 | });
31 | return instance;
32 | }
33 |
34 | - (instancetype)init {
35 | if (self = [super init]) {
36 | // initialize with default coders
37 | _mutableCoders = [@[[SDWebImageImageIOCoder sharedCoder]] mutableCopy];
38 | #ifdef SD_WEBP
39 | [_mutableCoders addObject:[SDWebImageWebPCoder sharedCoder]];
40 | #endif
41 | _mutableCodersAccessQueue = dispatch_queue_create("com.hackemist.SDWebImageCodersManager", DISPATCH_QUEUE_CONCURRENT);
42 | }
43 | return self;
44 | }
45 |
46 | #pragma mark - Coder IO operations
47 |
48 | - (void)addCoder:(nonnull id)coder {
49 | if ([coder conformsToProtocol:@protocol(SDWebImageCoder)]) {
50 | dispatch_barrier_sync(self.mutableCodersAccessQueue, ^{
51 | [self.mutableCoders addObject:coder];
52 | });
53 | }
54 | }
55 |
56 | - (void)removeCoder:(nonnull id)coder {
57 | dispatch_barrier_sync(self.mutableCodersAccessQueue, ^{
58 | [self.mutableCoders removeObject:coder];
59 | });
60 | }
61 |
62 | - (NSArray *)coders {
63 | __block NSArray *sortedCoders = nil;
64 | dispatch_sync(self.mutableCodersAccessQueue, ^{
65 | sortedCoders = (NSArray *)[[[self.mutableCoders copy] reverseObjectEnumerator] allObjects];
66 | });
67 | return sortedCoders;
68 | }
69 |
70 | - (void)setCoders:(NSArray *)coders {
71 | dispatch_barrier_sync(self.mutableCodersAccessQueue, ^{
72 | self.mutableCoders = [coders mutableCopy];
73 | });
74 | }
75 |
76 | #pragma mark - SDWebImageCoder
77 | - (BOOL)canDecodeFromData:(NSData *)data {
78 | for (id coder in self.coders) {
79 | if ([coder canDecodeFromData:data]) {
80 | return YES;
81 | }
82 | }
83 | return NO;
84 | }
85 |
86 | - (BOOL)canEncodeToFormat:(SDImageFormat)format {
87 | for (id coder in self.coders) {
88 | if ([coder canEncodeToFormat:format]) {
89 | return YES;
90 | }
91 | }
92 | return NO;
93 | }
94 |
95 | - (UIImage *)decodedImageWithData:(NSData *)data {
96 | if (!data) {
97 | return nil;
98 | }
99 | for (id coder in self.coders) {
100 | if ([coder canDecodeFromData:data]) {
101 | return [coder decodedImageWithData:data];
102 | }
103 | }
104 | return nil;
105 | }
106 |
107 | - (UIImage *)decompressedImageWithImage:(UIImage *)image
108 | data:(NSData *__autoreleasing _Nullable *)data
109 | options:(nullable NSDictionary*)optionsDict {
110 | if (!image) {
111 | return nil;
112 | }
113 | for (id coder in self.coders) {
114 | if ([coder canDecodeFromData:*data]) {
115 | return [coder decompressedImageWithImage:image data:data options:optionsDict];
116 | }
117 | }
118 | return nil;
119 | }
120 |
121 | - (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format {
122 | if (!image) {
123 | return nil;
124 | }
125 | for (id coder in self.coders) {
126 | if ([coder canEncodeToFormat:format]) {
127 | return [coder encodedDataWithImage:image format:format];
128 | }
129 | }
130 | return nil;
131 | }
132 |
133 | @end
134 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/SDWebImageCompat.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Jamie Pinkham
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import
11 |
12 | #ifdef __OBJC_GC__
13 | #error SDWebImage does not support Objective-C Garbage Collection
14 | #endif
15 |
16 | // Apple's defines from TargetConditionals.h are a bit weird.
17 | // Seems like TARGET_OS_MAC is always defined (on all platforms).
18 | // To determine if we are running on OSX, we can only rely on TARGET_OS_IPHONE=0 and all the other platforms
19 | #if !TARGET_OS_IPHONE && !TARGET_OS_IOS && !TARGET_OS_TV && !TARGET_OS_WATCH
20 | #define SD_MAC 1
21 | #else
22 | #define SD_MAC 0
23 | #endif
24 |
25 | // iOS and tvOS are very similar, UIKit exists on both platforms
26 | // Note: watchOS also has UIKit, but it's very limited
27 | #if TARGET_OS_IOS || TARGET_OS_TV
28 | #define SD_UIKIT 1
29 | #else
30 | #define SD_UIKIT 0
31 | #endif
32 |
33 | #if TARGET_OS_IOS
34 | #define SD_IOS 1
35 | #else
36 | #define SD_IOS 0
37 | #endif
38 |
39 | #if TARGET_OS_TV
40 | #define SD_TV 1
41 | #else
42 | #define SD_TV 0
43 | #endif
44 |
45 | #if TARGET_OS_WATCH
46 | #define SD_WATCH 1
47 | #else
48 | #define SD_WATCH 0
49 | #endif
50 |
51 |
52 | #if SD_MAC
53 | #import
54 | #ifndef UIImage
55 | #define UIImage NSImage
56 | #endif
57 | #ifndef UIImageView
58 | #define UIImageView NSImageView
59 | #endif
60 | #ifndef UIView
61 | #define UIView NSView
62 | #endif
63 | #else
64 | #if __IPHONE_OS_VERSION_MIN_REQUIRED != 20000 && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_5_0
65 | #error SDWebImage doesn't support Deployment Target version < 5.0
66 | #endif
67 |
68 | #if SD_UIKIT
69 | #import
70 | #endif
71 | #if SD_WATCH
72 | #import
73 | #endif
74 | #endif
75 |
76 | #ifndef NS_ENUM
77 | #define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type
78 | #endif
79 |
80 | #ifndef NS_OPTIONS
81 | #define NS_OPTIONS(_type, _name) enum _name : _type _name; enum _name : _type
82 | #endif
83 |
84 | FOUNDATION_EXPORT UIImage *SDScaledImageForKey(NSString *key, UIImage *image);
85 |
86 | typedef void(^SDWebImageNoParamsBlock)(void);
87 |
88 | FOUNDATION_EXPORT NSString *const SDWebImageErrorDomain;
89 |
90 | #ifndef dispatch_queue_async_safe
91 | #define dispatch_queue_async_safe(queue, block)\
92 | if (strcmp(dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL), dispatch_queue_get_label(queue)) == 0) {\
93 | block();\
94 | } else {\
95 | dispatch_async(queue, block);\
96 | }
97 | #endif
98 |
99 | #ifndef dispatch_main_async_safe
100 | #define dispatch_main_async_safe(block) dispatch_queue_async_safe(dispatch_get_main_queue(), block)
101 | #endif
102 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/SDWebImageCompat.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 | #import "UIImage+MultiFormat.h"
11 |
12 | #if !__has_feature(objc_arc)
13 | #error SDWebImage is ARC only. Either turn on ARC for the project or use -fobjc-arc flag
14 | #endif
15 |
16 | #if !OS_OBJECT_USE_OBJC
17 | #error SDWebImage need ARC for dispatch object
18 | #endif
19 |
20 | inline UIImage *SDScaledImageForKey(NSString * _Nullable key, UIImage * _Nullable image) {
21 | if (!image) {
22 | return nil;
23 | }
24 |
25 | #if SD_MAC
26 | return image;
27 | #elif SD_UIKIT || SD_WATCH
28 | if ((image.images).count > 0) {
29 | NSMutableArray *scaledImages = [NSMutableArray array];
30 |
31 | for (UIImage *tempImage in image.images) {
32 | [scaledImages addObject:SDScaledImageForKey(key, tempImage)];
33 | }
34 |
35 | UIImage *animatedImage = [UIImage animatedImageWithImages:scaledImages duration:image.duration];
36 | if (animatedImage) {
37 | animatedImage.sd_imageLoopCount = image.sd_imageLoopCount;
38 | }
39 | return animatedImage;
40 | } else {
41 | #if SD_WATCH
42 | if ([[WKInterfaceDevice currentDevice] respondsToSelector:@selector(screenScale)]) {
43 | #elif SD_UIKIT
44 | if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
45 | #endif
46 | CGFloat scale = 1;
47 | if (key.length >= 8) {
48 | NSRange range = [key rangeOfString:@"@2x."];
49 | if (range.location != NSNotFound) {
50 | scale = 2.0;
51 | }
52 |
53 | range = [key rangeOfString:@"@3x."];
54 | if (range.location != NSNotFound) {
55 | scale = 3.0;
56 | }
57 | }
58 |
59 | UIImage *scaledImage = [[UIImage alloc] initWithCGImage:image.CGImage scale:scale orientation:image.imageOrientation];
60 | image = scaledImage;
61 | }
62 | return image;
63 | }
64 | #endif
65 | }
66 |
67 | NSString *const SDWebImageErrorDomain = @"SDWebImageErrorDomain";
68 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageDownloader.h"
11 | #import "SDWebImageOperation.h"
12 |
13 | FOUNDATION_EXPORT NSString * _Nonnull const SDWebImageDownloadStartNotification;
14 | FOUNDATION_EXPORT NSString * _Nonnull const SDWebImageDownloadReceiveResponseNotification;
15 | FOUNDATION_EXPORT NSString * _Nonnull const SDWebImageDownloadStopNotification;
16 | FOUNDATION_EXPORT NSString * _Nonnull const SDWebImageDownloadFinishNotification;
17 |
18 |
19 |
20 | /**
21 | Describes a downloader operation. If one wants to use a custom downloader op, it needs to inherit from `NSOperation` and conform to this protocol
22 | For the description about these methods, see `SDWebImageDownloaderOperation`
23 | */
24 | @protocol SDWebImageDownloaderOperationInterface
25 |
26 | - (nonnull instancetype)initWithRequest:(nullable NSURLRequest *)request
27 | inSession:(nullable NSURLSession *)session
28 | options:(SDWebImageDownloaderOptions)options;
29 |
30 | - (nullable id)addHandlersForProgress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
31 | completed:(nullable SDWebImageDownloaderCompletedBlock)completedBlock;
32 |
33 | - (BOOL)shouldDecompressImages;
34 | - (void)setShouldDecompressImages:(BOOL)value;
35 |
36 | - (nullable NSURLCredential *)credential;
37 | - (void)setCredential:(nullable NSURLCredential *)value;
38 |
39 | - (BOOL)cancel:(nullable id)token;
40 |
41 | @end
42 |
43 |
44 | @interface SDWebImageDownloaderOperation : NSOperation
45 |
46 | /**
47 | * The request used by the operation's task.
48 | */
49 | @property (strong, nonatomic, readonly, nullable) NSURLRequest *request;
50 |
51 | /**
52 | * The operation's task
53 | */
54 | @property (strong, nonatomic, readonly, nullable) NSURLSessionTask *dataTask;
55 |
56 |
57 | @property (assign, nonatomic) BOOL shouldDecompressImages;
58 |
59 | /**
60 | * Was used to determine whether the URL connection should consult the credential storage for authenticating the connection.
61 | * @deprecated Not used for a couple of versions
62 | */
63 | @property (nonatomic, assign) BOOL shouldUseCredentialStorage __deprecated_msg("Property deprecated. Does nothing. Kept only for backwards compatibility");
64 |
65 | /**
66 | * The credential used for authentication challenges in `-URLSession:task:didReceiveChallenge:completionHandler:`.
67 | *
68 | * This will be overridden by any shared credentials that exist for the username or password of the request URL, if present.
69 | */
70 | @property (nonatomic, strong, nullable) NSURLCredential *credential;
71 |
72 | /**
73 | * The SDWebImageDownloaderOptions for the receiver.
74 | */
75 | @property (assign, nonatomic, readonly) SDWebImageDownloaderOptions options;
76 |
77 | /**
78 | * The expected size of data.
79 | */
80 | @property (assign, nonatomic) NSInteger expectedSize;
81 |
82 | /**
83 | * The response returned by the operation's task.
84 | */
85 | @property (strong, nonatomic, nullable) NSURLResponse *response;
86 |
87 | /**
88 | * Initializes a `SDWebImageDownloaderOperation` object
89 | *
90 | * @see SDWebImageDownloaderOperation
91 | *
92 | * @param request the URL request
93 | * @param session the URL session in which this operation will run
94 | * @param options downloader options
95 | *
96 | * @return the initialized instance
97 | */
98 | - (nonnull instancetype)initWithRequest:(nullable NSURLRequest *)request
99 | inSession:(nullable NSURLSession *)session
100 | options:(SDWebImageDownloaderOptions)options NS_DESIGNATED_INITIALIZER;
101 |
102 | /**
103 | * Adds handlers for progress and completion. Returns a tokent that can be passed to -cancel: to cancel this set of
104 | * callbacks.
105 | *
106 | * @param progressBlock the block executed when a new chunk of data arrives.
107 | * @note the progress block is executed on a background queue
108 | * @param completedBlock the block executed when the download is done.
109 | * @note the completed block is executed on the main queue for success. If errors are found, there is a chance the block will be executed on a background queue
110 | *
111 | * @return the token to use to cancel this set of handlers
112 | */
113 | - (nullable id)addHandlersForProgress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
114 | completed:(nullable SDWebImageDownloaderCompletedBlock)completedBlock;
115 |
116 | /**
117 | * Cancels a set of callbacks. Once all callbacks are canceled, the operation is cancelled.
118 | *
119 | * @param token the token representing a set of callbacks to cancel
120 | *
121 | * @return YES if the operation was stopped because this was the last token to be canceled. NO otherwise.
122 | */
123 | - (BOOL)cancel:(nullable id)token;
124 |
125 | @end
126 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/SDWebImageFrame.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCompat.h"
11 |
12 | @interface SDWebImageFrame : NSObject
13 |
14 | // This class is used for creating animated images via `animatedImageWithFrames` in `SDWebImageCoderHelper`. Attention if you need to specify animated images loop count, use `sd_imageLoopCount` property in `UIImage+MultiFormat`.
15 |
16 | /**
17 | The image of current frame. You should not set an animated image.
18 | */
19 | @property (nonatomic, strong, readonly, nonnull) UIImage *image;
20 | /**
21 | The duration of current frame to be displayed. The number is seconds but not milliseconds. You should not set this to zero.
22 | */
23 | @property (nonatomic, readonly, assign) NSTimeInterval duration;
24 |
25 | /**
26 | Create a frame instance with specify image and duration
27 |
28 | @param image current frame's image
29 | @param duration current frame's duration
30 | @return frame instance
31 | */
32 | + (instancetype _Nonnull)frameWithImage:(UIImage * _Nonnull)image duration:(NSTimeInterval)duration;
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/SDWebImageFrame.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageFrame.h"
10 |
11 | @interface SDWebImageFrame ()
12 |
13 | @property (nonatomic, strong, readwrite, nonnull) UIImage *image;
14 | @property (nonatomic, readwrite, assign) NSTimeInterval duration;
15 |
16 | @end
17 |
18 | @implementation SDWebImageFrame
19 |
20 | + (instancetype)frameWithImage:(UIImage *)image duration:(NSTimeInterval)duration {
21 | SDWebImageFrame *frame = [[SDWebImageFrame alloc] init];
22 | frame.image = image;
23 | frame.duration = duration;
24 |
25 | return frame;
26 | }
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/SDWebImageGIFCoder.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCoder.h"
11 |
12 | /**
13 | Built in coder using ImageIO that supports GIF encoding/decoding
14 | @note `SDWebImageIOCoder` supports GIF but only as static (will use the 1st frame).
15 | @note Use `SDWebImageGIFCoder` for fully animated GIFs - less performant than `FLAnimatedImage`
16 | @note If you decide to make all `UIImageView`(including `FLAnimatedImageView`) instance support GIF. You should add this coder to `SDWebImageCodersManager` and make sure that it has a higher priority than `SDWebImageIOCoder`
17 | @note The recommended approach for animated GIFs is using `FLAnimatedImage`. It's more performant than `UIImageView` for GIF displaying
18 | */
19 | @interface SDWebImageGIFCoder : NSObject
20 |
21 | + (nonnull instancetype)sharedCoder;
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/SDWebImageGIFCoder.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageGIFCoder.h"
10 | #import "NSImage+WebCache.h"
11 | #import
12 | #import "NSData+ImageContentType.h"
13 | #import "UIImage+MultiFormat.h"
14 | #import "SDWebImageCoderHelper.h"
15 | #import "SDAnimatedImageRep.h"
16 |
17 | @implementation SDWebImageGIFCoder
18 |
19 | + (instancetype)sharedCoder {
20 | static SDWebImageGIFCoder *coder;
21 | static dispatch_once_t onceToken;
22 | dispatch_once(&onceToken, ^{
23 | coder = [[SDWebImageGIFCoder alloc] init];
24 | });
25 | return coder;
26 | }
27 |
28 | #pragma mark - Decode
29 | - (BOOL)canDecodeFromData:(nullable NSData *)data {
30 | return ([NSData sd_imageFormatForImageData:data] == SDImageFormatGIF);
31 | }
32 |
33 | - (UIImage *)decodedImageWithData:(NSData *)data {
34 | if (!data) {
35 | return nil;
36 | }
37 |
38 | #if SD_MAC
39 | SDAnimatedImageRep *imageRep = [[SDAnimatedImageRep alloc] initWithData:data];
40 | NSImage *animatedImage = [[NSImage alloc] initWithSize:imageRep.size];
41 | [animatedImage addRepresentation:imageRep];
42 | return animatedImage;
43 | #else
44 |
45 | CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL);
46 | if (!source) {
47 | return nil;
48 | }
49 | size_t count = CGImageSourceGetCount(source);
50 |
51 | UIImage *animatedImage;
52 |
53 | if (count <= 1) {
54 | animatedImage = [[UIImage alloc] initWithData:data];
55 | } else {
56 | NSMutableArray *frames = [NSMutableArray array];
57 |
58 | for (size_t i = 0; i < count; i++) {
59 | CGImageRef imageRef = CGImageSourceCreateImageAtIndex(source, i, NULL);
60 | if (!imageRef) {
61 | continue;
62 | }
63 |
64 | float duration = [self sd_frameDurationAtIndex:i source:source];
65 | UIImage *image = [[UIImage alloc] initWithCGImage:imageRef];
66 | CGImageRelease(imageRef);
67 |
68 | SDWebImageFrame *frame = [SDWebImageFrame frameWithImage:image duration:duration];
69 | [frames addObject:frame];
70 | }
71 |
72 | NSUInteger loopCount = 1;
73 | NSDictionary *imageProperties = (__bridge_transfer NSDictionary *)CGImageSourceCopyProperties(source, nil);
74 | NSDictionary *gifProperties = [imageProperties valueForKey:(__bridge_transfer NSString *)kCGImagePropertyGIFDictionary];
75 | if (gifProperties) {
76 | NSNumber *gifLoopCount = [gifProperties valueForKey:(__bridge_transfer NSString *)kCGImagePropertyGIFLoopCount];
77 | if (gifLoopCount != nil) {
78 | loopCount = gifLoopCount.unsignedIntegerValue;
79 | }
80 | }
81 |
82 | animatedImage = [SDWebImageCoderHelper animatedImageWithFrames:frames];
83 | animatedImage.sd_imageLoopCount = loopCount;
84 | }
85 |
86 | CFRelease(source);
87 |
88 | return animatedImage;
89 | #endif
90 | }
91 |
92 | - (float)sd_frameDurationAtIndex:(NSUInteger)index source:(CGImageSourceRef)source {
93 | float frameDuration = 0.1f;
94 | CFDictionaryRef cfFrameProperties = CGImageSourceCopyPropertiesAtIndex(source, index, nil);
95 | if (!cfFrameProperties) {
96 | return frameDuration;
97 | }
98 | NSDictionary *frameProperties = (__bridge NSDictionary *)cfFrameProperties;
99 | NSDictionary *gifProperties = frameProperties[(NSString *)kCGImagePropertyGIFDictionary];
100 |
101 | NSNumber *delayTimeUnclampedProp = gifProperties[(NSString *)kCGImagePropertyGIFUnclampedDelayTime];
102 | if (delayTimeUnclampedProp != nil) {
103 | frameDuration = [delayTimeUnclampedProp floatValue];
104 | } else {
105 | NSNumber *delayTimeProp = gifProperties[(NSString *)kCGImagePropertyGIFDelayTime];
106 | if (delayTimeProp != nil) {
107 | frameDuration = [delayTimeProp floatValue];
108 | }
109 | }
110 |
111 | // Many annoying ads specify a 0 duration to make an image flash as quickly as possible.
112 | // We follow Firefox's behavior and use a duration of 100 ms for any frames that specify
113 | // a duration of <= 10 ms. See and
114 | // for more information.
115 |
116 | if (frameDuration < 0.011f) {
117 | frameDuration = 0.100f;
118 | }
119 |
120 | CFRelease(cfFrameProperties);
121 | return frameDuration;
122 | }
123 |
124 | - (UIImage *)decompressedImageWithImage:(UIImage *)image
125 | data:(NSData *__autoreleasing _Nullable *)data
126 | options:(nullable NSDictionary*)optionsDict {
127 | // GIF do not decompress
128 | return image;
129 | }
130 |
131 | #pragma mark - Encode
132 | - (BOOL)canEncodeToFormat:(SDImageFormat)format {
133 | return (format == SDImageFormatGIF);
134 | }
135 |
136 | - (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format {
137 | if (!image) {
138 | return nil;
139 | }
140 |
141 | if (format != SDImageFormatGIF) {
142 | return nil;
143 | }
144 |
145 | NSMutableData *imageData = [NSMutableData data];
146 | CFStringRef imageUTType = [NSData sd_UTTypeFromSDImageFormat:SDImageFormatGIF];
147 | NSArray *frames = [SDWebImageCoderHelper framesFromAnimatedImage:image];
148 |
149 | // Create an image destination. GIF does not support EXIF image orientation
150 | CGImageDestinationRef imageDestination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)imageData, imageUTType, frames.count, NULL);
151 | if (!imageDestination) {
152 | // Handle failure.
153 | return nil;
154 | }
155 | if (frames.count == 0) {
156 | // for static single GIF images
157 | CGImageDestinationAddImage(imageDestination, image.CGImage, nil);
158 | } else {
159 | // for animated GIF images
160 | NSUInteger loopCount = image.sd_imageLoopCount;
161 | NSDictionary *gifProperties = @{(__bridge_transfer NSString *)kCGImagePropertyGIFDictionary: @{(__bridge_transfer NSString *)kCGImagePropertyGIFLoopCount : @(loopCount)}};
162 | CGImageDestinationSetProperties(imageDestination, (__bridge CFDictionaryRef)gifProperties);
163 |
164 | for (size_t i = 0; i < frames.count; i++) {
165 | SDWebImageFrame *frame = frames[i];
166 | float frameDuration = frame.duration;
167 | CGImageRef frameImageRef = frame.image.CGImage;
168 | NSDictionary *frameProperties = @{(__bridge_transfer NSString *)kCGImagePropertyGIFDictionary : @{(__bridge_transfer NSString *)kCGImagePropertyGIFDelayTime : @(frameDuration)}};
169 | CGImageDestinationAddImage(imageDestination, frameImageRef, (__bridge CFDictionaryRef)frameProperties);
170 | }
171 | }
172 | // Finalize the destination.
173 | if (CGImageDestinationFinalize(imageDestination) == NO) {
174 | // Handle failure.
175 | imageData = nil;
176 | }
177 |
178 | CFRelease(imageDestination);
179 |
180 | return [imageData copy];
181 | }
182 |
183 | @end
184 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/SDWebImageImageIOCoder.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCoder.h"
11 |
12 | /**
13 | Built in coder that supports PNG, JPEG, TIFF, includes support for progressive decoding.
14 |
15 | GIF
16 | Also supports static GIF (meaning will only handle the 1st frame).
17 | For a full GIF support, we recommend `FLAnimatedImage` or our less performant `SDWebImageGIFCoder`
18 |
19 | HEIC
20 | This coder also supports HEIC format because ImageIO supports it natively. But it depends on the system capabilities, so it won't work on all devices, see: https://devstreaming-cdn.apple.com/videos/wwdc/2017/511tj33587vdhds/511/511_working_with_heif_and_hevc.pdf
21 | Decode(Software): !Simulator && (iOS 11 || tvOS 11 || macOS 10.13)
22 | Decode(Hardware): !Simulator && ((iOS 11 && A9Chip) || (macOS 10.13 && 6thGenerationIntelCPU))
23 | Encode(Software): macOS 10.13
24 | Encode(Hardware): !Simulator && ((iOS 11 && A10FusionChip) || (macOS 10.13 && 6thGenerationIntelCPU))
25 | */
26 | @interface SDWebImageImageIOCoder : NSObject
27 |
28 | + (nonnull instancetype)sharedCoder;
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/SDWebImageOperation.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 |
11 | @protocol SDWebImageOperation
12 |
13 | - (void)cancel;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/SDWebImagePrefetcher.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageManager.h"
11 |
12 | @class SDWebImagePrefetcher;
13 |
14 | @protocol SDWebImagePrefetcherDelegate
15 |
16 | @optional
17 |
18 | /**
19 | * Called when an image was prefetched.
20 | *
21 | * @param imagePrefetcher The current image prefetcher
22 | * @param imageURL The image url that was prefetched
23 | * @param finishedCount The total number of images that were prefetched (successful or not)
24 | * @param totalCount The total number of images that were to be prefetched
25 | */
26 | - (void)imagePrefetcher:(nonnull SDWebImagePrefetcher *)imagePrefetcher didPrefetchURL:(nullable NSURL *)imageURL finishedCount:(NSUInteger)finishedCount totalCount:(NSUInteger)totalCount;
27 |
28 | /**
29 | * Called when all images are prefetched.
30 | * @param imagePrefetcher The current image prefetcher
31 | * @param totalCount The total number of images that were prefetched (whether successful or not)
32 | * @param skippedCount The total number of images that were skipped
33 | */
34 | - (void)imagePrefetcher:(nonnull SDWebImagePrefetcher *)imagePrefetcher didFinishWithTotalCount:(NSUInteger)totalCount skippedCount:(NSUInteger)skippedCount;
35 |
36 | @end
37 |
38 | typedef void(^SDWebImagePrefetcherProgressBlock)(NSUInteger noOfFinishedUrls, NSUInteger noOfTotalUrls);
39 | typedef void(^SDWebImagePrefetcherCompletionBlock)(NSUInteger noOfFinishedUrls, NSUInteger noOfSkippedUrls);
40 |
41 | /**
42 | * Prefetch some URLs in the cache for future use. Images are downloaded in low priority.
43 | */
44 | @interface SDWebImagePrefetcher : NSObject
45 |
46 | /**
47 | * The web image manager
48 | */
49 | @property (strong, nonatomic, readonly, nonnull) SDWebImageManager *manager;
50 |
51 | /**
52 | * Maximum number of URLs to prefetch at the same time. Defaults to 3.
53 | */
54 | @property (nonatomic, assign) NSUInteger maxConcurrentDownloads;
55 |
56 | /**
57 | * SDWebImageOptions for prefetcher. Defaults to SDWebImageLowPriority.
58 | */
59 | @property (nonatomic, assign) SDWebImageOptions options;
60 |
61 | /**
62 | * Queue options for Prefetcher. Defaults to Main Queue.
63 | */
64 | @property (strong, nonatomic, nonnull) dispatch_queue_t prefetcherQueue;
65 |
66 | @property (weak, nonatomic, nullable) id delegate;
67 |
68 | /**
69 | * Return the global image prefetcher instance.
70 | */
71 | + (nonnull instancetype)sharedImagePrefetcher;
72 |
73 | /**
74 | * Allows you to instantiate a prefetcher with any arbitrary image manager.
75 | */
76 | - (nonnull instancetype)initWithImageManager:(nonnull SDWebImageManager *)manager NS_DESIGNATED_INITIALIZER;
77 |
78 | /**
79 | * Assign list of URLs to let SDWebImagePrefetcher to queue the prefetching,
80 | * currently one image is downloaded at a time,
81 | * and skips images for failed downloads and proceed to the next image in the list.
82 | * Any previously-running prefetch operations are canceled.
83 | *
84 | * @param urls list of URLs to prefetch
85 | */
86 | - (void)prefetchURLs:(nullable NSArray *)urls;
87 |
88 | /**
89 | * Assign list of URLs to let SDWebImagePrefetcher to queue the prefetching,
90 | * currently one image is downloaded at a time,
91 | * and skips images for failed downloads and proceed to the next image in the list.
92 | * Any previously-running prefetch operations are canceled.
93 | *
94 | * @param urls list of URLs to prefetch
95 | * @param progressBlock block to be called when progress updates;
96 | * first parameter is the number of completed (successful or not) requests,
97 | * second parameter is the total number of images originally requested to be prefetched
98 | * @param completionBlock block to be called when prefetching is completed
99 | * first param is the number of completed (successful or not) requests,
100 | * second parameter is the number of skipped requests
101 | */
102 | - (void)prefetchURLs:(nullable NSArray *)urls
103 | progress:(nullable SDWebImagePrefetcherProgressBlock)progressBlock
104 | completed:(nullable SDWebImagePrefetcherCompletionBlock)completionBlock;
105 |
106 | /**
107 | * Remove and cancel queued list
108 | */
109 | - (void)cancelPrefetching;
110 |
111 |
112 | @end
113 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/SDWebImagePrefetcher.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImagePrefetcher.h"
10 |
11 | @interface SDWebImagePrefetcher ()
12 |
13 | @property (strong, nonatomic, nonnull) SDWebImageManager *manager;
14 | @property (strong, atomic, nullable) NSArray *prefetchURLs; // may be accessed from different queue
15 | @property (assign, nonatomic) NSUInteger requestedCount;
16 | @property (assign, nonatomic) NSUInteger skippedCount;
17 | @property (assign, nonatomic) NSUInteger finishedCount;
18 | @property (assign, nonatomic) NSTimeInterval startedTime;
19 | @property (copy, nonatomic, nullable) SDWebImagePrefetcherCompletionBlock completionBlock;
20 | @property (copy, nonatomic, nullable) SDWebImagePrefetcherProgressBlock progressBlock;
21 |
22 | @end
23 |
24 | @implementation SDWebImagePrefetcher
25 |
26 | + (nonnull instancetype)sharedImagePrefetcher {
27 | static dispatch_once_t once;
28 | static id instance;
29 | dispatch_once(&once, ^{
30 | instance = [self new];
31 | });
32 | return instance;
33 | }
34 |
35 | - (nonnull instancetype)init {
36 | return [self initWithImageManager:[SDWebImageManager new]];
37 | }
38 |
39 | - (nonnull instancetype)initWithImageManager:(SDWebImageManager *)manager {
40 | if ((self = [super init])) {
41 | _manager = manager;
42 | _options = SDWebImageLowPriority;
43 | _prefetcherQueue = dispatch_get_main_queue();
44 | self.maxConcurrentDownloads = 3;
45 | }
46 | return self;
47 | }
48 |
49 | - (void)setMaxConcurrentDownloads:(NSUInteger)maxConcurrentDownloads {
50 | self.manager.imageDownloader.maxConcurrentDownloads = maxConcurrentDownloads;
51 | }
52 |
53 | - (NSUInteger)maxConcurrentDownloads {
54 | return self.manager.imageDownloader.maxConcurrentDownloads;
55 | }
56 |
57 | - (void)startPrefetchingAtIndex:(NSUInteger)index {
58 | NSURL *currentURL;
59 | @synchronized(self) {
60 | if (index >= self.prefetchURLs.count) return;
61 | currentURL = self.prefetchURLs[index];
62 | self.requestedCount++;
63 | }
64 | [self.manager loadImageWithURL:currentURL options:self.options progress:nil completed:^(UIImage *image, NSData *data, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
65 | if (!finished) return;
66 | self.finishedCount++;
67 |
68 | if (self.progressBlock) {
69 | self.progressBlock(self.finishedCount,(self.prefetchURLs).count);
70 | }
71 | if (!image) {
72 | // Add last failed
73 | self.skippedCount++;
74 | }
75 | if ([self.delegate respondsToSelector:@selector(imagePrefetcher:didPrefetchURL:finishedCount:totalCount:)]) {
76 | [self.delegate imagePrefetcher:self
77 | didPrefetchURL:currentURL
78 | finishedCount:self.finishedCount
79 | totalCount:self.prefetchURLs.count
80 | ];
81 | }
82 | if (self.prefetchURLs.count > self.requestedCount) {
83 | dispatch_async(self.prefetcherQueue, ^{
84 | // we need dispatch to avoid function recursion call. This can prevent stack overflow even for huge urls list
85 | [self startPrefetchingAtIndex:self.requestedCount];
86 | });
87 | } else if (self.finishedCount == self.requestedCount) {
88 | [self reportStatus];
89 | if (self.completionBlock) {
90 | self.completionBlock(self.finishedCount, self.skippedCount);
91 | self.completionBlock = nil;
92 | }
93 | self.progressBlock = nil;
94 | }
95 | }];
96 | }
97 |
98 | - (void)reportStatus {
99 | NSUInteger total = (self.prefetchURLs).count;
100 | if ([self.delegate respondsToSelector:@selector(imagePrefetcher:didFinishWithTotalCount:skippedCount:)]) {
101 | [self.delegate imagePrefetcher:self
102 | didFinishWithTotalCount:(total - self.skippedCount)
103 | skippedCount:self.skippedCount
104 | ];
105 | }
106 | }
107 |
108 | - (void)prefetchURLs:(nullable NSArray *)urls {
109 | [self prefetchURLs:urls progress:nil completed:nil];
110 | }
111 |
112 | - (void)prefetchURLs:(nullable NSArray *)urls
113 | progress:(nullable SDWebImagePrefetcherProgressBlock)progressBlock
114 | completed:(nullable SDWebImagePrefetcherCompletionBlock)completionBlock {
115 | [self cancelPrefetching]; // Prevent duplicate prefetch request
116 | self.startedTime = CFAbsoluteTimeGetCurrent();
117 | self.prefetchURLs = urls;
118 | self.completionBlock = completionBlock;
119 | self.progressBlock = progressBlock;
120 |
121 | if (urls.count == 0) {
122 | if (completionBlock) {
123 | completionBlock(0,0);
124 | }
125 | } else {
126 | // Starts prefetching from the very first image on the list with the max allowed concurrency
127 | NSUInteger listCount = self.prefetchURLs.count;
128 | for (NSUInteger i = 0; i < self.maxConcurrentDownloads && self.requestedCount < listCount; i++) {
129 | [self startPrefetchingAtIndex:i];
130 | }
131 | }
132 | }
133 |
134 | - (void)cancelPrefetching {
135 | @synchronized(self) {
136 | self.prefetchURLs = nil;
137 | self.skippedCount = 0;
138 | self.requestedCount = 0;
139 | self.finishedCount = 0;
140 | }
141 | [self.manager cancelAll];
142 | }
143 |
144 | @end
145 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/SDWebImageTransition.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | #if SD_UIKIT || SD_MAC
12 | #import "SDImageCache.h"
13 |
14 | // This class is used to provide a transition animation after the view category load image finished. Use this on `sd_imageTransition` in UIView+WebCache.h
15 | // for UIKit(iOS & tvOS), we use `+[UIView transitionWithView:duration:options:animations:completion]` for transition animation.
16 | // for AppKit(macOS), we use `+[NSAnimationContext runAnimationGroup:completionHandler:]` for transition animation. You can call `+[NSAnimationContext currentContext]` to grab the context during animations block.
17 | // These transition are provided for basic usage. If you need complicated animation, consider to directly use Core Animation or use `SDWebImageAvoidAutoSetImage` and implement your own after image load finished.
18 |
19 | #if SD_UIKIT
20 | typedef UIViewAnimationOptions SDWebImageAnimationOptions;
21 | #else
22 | typedef NS_OPTIONS(NSUInteger, SDWebImageAnimationOptions) {
23 | SDWebImageAnimationOptionAllowsImplicitAnimation = 1 << 0, // specify `allowsImplicitAnimation` for the `NSAnimationContext`
24 | };
25 | #endif
26 |
27 | typedef void (^SDWebImageTransitionPreparesBlock)(__kindof UIView * _Nonnull view, UIImage * _Nullable image, NSData * _Nullable imageData, SDImageCacheType cacheType, NSURL * _Nullable imageURL);
28 | typedef void (^SDWebImageTransitionAnimationsBlock)(__kindof UIView * _Nonnull view, UIImage * _Nullable image);
29 | typedef void (^SDWebImageTransitionCompletionBlock)(BOOL finished);
30 |
31 | @interface SDWebImageTransition : NSObject
32 |
33 | /**
34 | By default, we set the image to the view at the beginning of the animtions. You can disable this and provide custom set image process
35 | */
36 | @property (nonatomic, assign) BOOL avoidAutoSetImage;
37 | /**
38 | The duration of the transition animation, measured in seconds. Defaults to 0.5.
39 | */
40 | @property (nonatomic, assign) NSTimeInterval duration;
41 | /**
42 | The timing function used for all animations within this transition animation (macOS).
43 | */
44 | @property (nonatomic, strong, nullable) CAMediaTimingFunction *timingFunction NS_AVAILABLE_MAC(10_7);
45 | /**
46 | A mask of options indicating how you want to perform the animations.
47 | */
48 | @property (nonatomic, assign) SDWebImageAnimationOptions animationOptions;
49 | /**
50 | A block object to be executed before the animation sequence starts.
51 | */
52 | @property (nonatomic, copy, nullable) SDWebImageTransitionPreparesBlock prepares;
53 | /**
54 | A block object that contains the changes you want to make to the specified view.
55 | */
56 | @property (nonatomic, copy, nullable) SDWebImageTransitionAnimationsBlock animations;
57 | /**
58 | A block object to be executed when the animation sequence ends.
59 | */
60 | @property (nonatomic, copy, nullable) SDWebImageTransitionCompletionBlock completion;
61 |
62 | @end
63 |
64 | // Convenience way to create transition. Remember to specify the duration if needed.
65 | // for UIKit, these transition just use the correspond `animationOptions`
66 | // for AppKit, these transition use Core Animation in `animations`. So your view must be layer-backed. Set `wantsLayer = YES` before you apply it.
67 |
68 | @interface SDWebImageTransition (Conveniences)
69 |
70 | // class property is available in Xcode 8. We will drop the Xcode 7.3 support in 5.x
71 | #if __has_feature(objc_class_property)
72 | /// Fade transition.
73 | @property (nonatomic, class, nonnull, readonly) SDWebImageTransition *fadeTransition;
74 | /// Flip from left transition.
75 | @property (nonatomic, class, nonnull, readonly) SDWebImageTransition *flipFromLeftTransition;
76 | /// Flip from right transition.
77 | @property (nonatomic, class, nonnull, readonly) SDWebImageTransition *flipFromRightTransition;
78 | /// Flip from top transition.
79 | @property (nonatomic, class, nonnull, readonly) SDWebImageTransition *flipFromTopTransition;
80 | /// Flip from bottom transition.
81 | @property (nonatomic, class, nonnull, readonly) SDWebImageTransition *flipFromBottomTransition;
82 | /// Curl up transition.
83 | @property (nonatomic, class, nonnull, readonly) SDWebImageTransition *curlUpTransition;
84 | /// Curl down transition.
85 | @property (nonatomic, class, nonnull, readonly) SDWebImageTransition *curlDownTransition;
86 | #else
87 | + (nonnull instancetype)fadeTransition;
88 | + (nonnull instancetype)flipFromLeftTransition;
89 | + (nonnull instancetype)flipFromRightTransition;
90 | + (nonnull instancetype)flipFromTopTransition;
91 | + (nonnull instancetype)flipFromBottomTransition;
92 | + (nonnull instancetype)curlUpTransition;
93 | + (nonnull instancetype)curlDownTransition;
94 | #endif
95 |
96 | @end
97 |
98 | #endif
99 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/SDWebImageTransition.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageTransition.h"
10 |
11 | #if SD_UIKIT || SD_MAC
12 |
13 | #if SD_MAC
14 | #import
15 | #endif
16 |
17 | @implementation SDWebImageTransition
18 |
19 | - (instancetype)init {
20 | self = [super init];
21 | if (self) {
22 | self.duration = 0.5;
23 | }
24 | return self;
25 | }
26 |
27 | @end
28 |
29 | @implementation SDWebImageTransition (Conveniences)
30 |
31 | + (SDWebImageTransition *)fadeTransition {
32 | SDWebImageTransition *transition = [SDWebImageTransition new];
33 | #if SD_UIKIT
34 | transition.animationOptions = UIViewAnimationOptionTransitionCrossDissolve;
35 | #else
36 | transition.animations = ^(__kindof NSView * _Nonnull view, NSImage * _Nullable image) {
37 | CATransition *trans = [CATransition animation];
38 | trans.type = kCATransitionFade;
39 | [view.layer addAnimation:trans forKey:kCATransition];
40 | };
41 | #endif
42 | return transition;
43 | }
44 |
45 | + (SDWebImageTransition *)flipFromLeftTransition {
46 | SDWebImageTransition *transition = [SDWebImageTransition new];
47 | #if SD_UIKIT
48 | transition.animationOptions = UIViewAnimationOptionTransitionFlipFromLeft;
49 | #else
50 | transition.animations = ^(__kindof NSView * _Nonnull view, NSImage * _Nullable image) {
51 | CATransition *trans = [CATransition animation];
52 | trans.type = kCATransitionPush;
53 | trans.subtype = kCATransitionFromLeft;
54 | [view.layer addAnimation:trans forKey:kCATransition];
55 | };
56 | #endif
57 | return transition;
58 | }
59 |
60 | + (SDWebImageTransition *)flipFromRightTransition {
61 | SDWebImageTransition *transition = [SDWebImageTransition new];
62 | #if SD_UIKIT
63 | transition.animationOptions = UIViewAnimationOptionTransitionFlipFromRight;
64 | #else
65 | transition.animations = ^(__kindof NSView * _Nonnull view, NSImage * _Nullable image) {
66 | CATransition *trans = [CATransition animation];
67 | trans.type = kCATransitionPush;
68 | trans.subtype = kCATransitionFromRight;
69 | [view.layer addAnimation:trans forKey:kCATransition];
70 | };
71 | #endif
72 | return transition;
73 | }
74 |
75 | + (SDWebImageTransition *)flipFromTopTransition {
76 | SDWebImageTransition *transition = [SDWebImageTransition new];
77 | #if SD_UIKIT
78 | transition.animationOptions = UIViewAnimationOptionTransitionFlipFromTop;
79 | #else
80 | transition.animations = ^(__kindof NSView * _Nonnull view, NSImage * _Nullable image) {
81 | CATransition *trans = [CATransition animation];
82 | trans.type = kCATransitionPush;
83 | trans.subtype = kCATransitionFromTop;
84 | [view.layer addAnimation:trans forKey:kCATransition];
85 | };
86 | #endif
87 | return transition;
88 | }
89 |
90 | + (SDWebImageTransition *)flipFromBottomTransition {
91 | SDWebImageTransition *transition = [SDWebImageTransition new];
92 | #if SD_UIKIT
93 | transition.animationOptions = UIViewAnimationOptionTransitionFlipFromBottom;
94 | #else
95 | transition.animations = ^(__kindof NSView * _Nonnull view, NSImage * _Nullable image) {
96 | CATransition *trans = [CATransition animation];
97 | trans.type = kCATransitionPush;
98 | trans.subtype = kCATransitionFromBottom;
99 | [view.layer addAnimation:trans forKey:kCATransition];
100 | };
101 | #endif
102 | return transition;
103 | }
104 |
105 | + (SDWebImageTransition *)curlUpTransition {
106 | SDWebImageTransition *transition = [SDWebImageTransition new];
107 | #if SD_UIKIT
108 | transition.animationOptions = UIViewAnimationOptionTransitionCurlUp;
109 | #else
110 | transition.animations = ^(__kindof NSView * _Nonnull view, NSImage * _Nullable image) {
111 | CATransition *trans = [CATransition animation];
112 | trans.type = kCATransitionReveal;
113 | trans.subtype = kCATransitionFromTop;
114 | [view.layer addAnimation:trans forKey:kCATransition];
115 | };
116 | #endif
117 | return transition;
118 | }
119 |
120 | + (SDWebImageTransition *)curlDownTransition {
121 | SDWebImageTransition *transition = [SDWebImageTransition new];
122 | #if SD_UIKIT
123 | transition.animationOptions = UIViewAnimationOptionTransitionCurlDown;
124 | #else
125 | transition.animations = ^(__kindof NSView * _Nonnull view, NSImage * _Nullable image) {
126 | CATransition *trans = [CATransition animation];
127 | trans.type = kCATransitionReveal;
128 | trans.subtype = kCATransitionFromBottom;
129 | [view.layer addAnimation:trans forKey:kCATransition];
130 | };
131 | #endif
132 | return transition;
133 | }
134 |
135 | @end
136 |
137 | #endif
138 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/UIButton+WebCache.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "UIButton+WebCache.h"
10 |
11 | #if SD_UIKIT
12 |
13 | #import "objc/runtime.h"
14 | #import "UIView+WebCacheOperation.h"
15 | #import "UIView+WebCache.h"
16 |
17 | static char imageURLStorageKey;
18 |
19 | typedef NSMutableDictionary SDStateImageURLDictionary;
20 |
21 | static inline NSString * imageURLKeyForState(UIControlState state) {
22 | return [NSString stringWithFormat:@"image_%lu", (unsigned long)state];
23 | }
24 |
25 | static inline NSString * backgroundImageURLKeyForState(UIControlState state) {
26 | return [NSString stringWithFormat:@"backgroundImage_%lu", (unsigned long)state];
27 | }
28 |
29 | static inline NSString * imageOperationKeyForState(UIControlState state) {
30 | return [NSString stringWithFormat:@"UIButtonImageOperation%lu", (unsigned long)state];
31 | }
32 |
33 | static inline NSString * backgroundImageOperationKeyForState(UIControlState state) {
34 | return [NSString stringWithFormat:@"UIButtonBackgroundImageOperation%lu", (unsigned long)state];
35 | }
36 |
37 | @implementation UIButton (WebCache)
38 |
39 | #pragma mark - Image
40 |
41 | - (nullable NSURL *)sd_currentImageURL {
42 | NSURL *url = self.sd_imageURLStorage[imageURLKeyForState(self.state)];
43 |
44 | if (!url) {
45 | url = self.sd_imageURLStorage[imageURLKeyForState(UIControlStateNormal)];
46 | }
47 |
48 | return url;
49 | }
50 |
51 | - (nullable NSURL *)sd_imageURLForState:(UIControlState)state {
52 | return self.sd_imageURLStorage[imageURLKeyForState(state)];
53 | }
54 |
55 | - (void)sd_setImageWithURL:(nullable NSURL *)url forState:(UIControlState)state {
56 | [self sd_setImageWithURL:url forState:state placeholderImage:nil options:0 completed:nil];
57 | }
58 |
59 | - (void)sd_setImageWithURL:(nullable NSURL *)url forState:(UIControlState)state placeholderImage:(nullable UIImage *)placeholder {
60 | [self sd_setImageWithURL:url forState:state placeholderImage:placeholder options:0 completed:nil];
61 | }
62 |
63 | - (void)sd_setImageWithURL:(nullable NSURL *)url forState:(UIControlState)state placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options {
64 | [self sd_setImageWithURL:url forState:state placeholderImage:placeholder options:options completed:nil];
65 | }
66 |
67 | - (void)sd_setImageWithURL:(nullable NSURL *)url forState:(UIControlState)state completed:(nullable SDExternalCompletionBlock)completedBlock {
68 | [self sd_setImageWithURL:url forState:state placeholderImage:nil options:0 completed:completedBlock];
69 | }
70 |
71 | - (void)sd_setImageWithURL:(nullable NSURL *)url forState:(UIControlState)state placeholderImage:(nullable UIImage *)placeholder completed:(nullable SDExternalCompletionBlock)completedBlock {
72 | [self sd_setImageWithURL:url forState:state placeholderImage:placeholder options:0 completed:completedBlock];
73 | }
74 |
75 | - (void)sd_setImageWithURL:(nullable NSURL *)url
76 | forState:(UIControlState)state
77 | placeholderImage:(nullable UIImage *)placeholder
78 | options:(SDWebImageOptions)options
79 | completed:(nullable SDExternalCompletionBlock)completedBlock {
80 | if (!url) {
81 | [self.sd_imageURLStorage removeObjectForKey:imageURLKeyForState(state)];
82 | } else {
83 | self.sd_imageURLStorage[imageURLKeyForState(state)] = url;
84 | }
85 |
86 | __weak typeof(self)weakSelf = self;
87 | [self sd_internalSetImageWithURL:url
88 | placeholderImage:placeholder
89 | options:options
90 | operationKey:imageOperationKeyForState(state)
91 | setImageBlock:^(UIImage *image, NSData *imageData) {
92 | [weakSelf setImage:image forState:state];
93 | }
94 | progress:nil
95 | completed:completedBlock];
96 | }
97 |
98 | #pragma mark - Background Image
99 |
100 | - (nullable NSURL *)sd_currentBackgroundImageURL {
101 | NSURL *url = self.sd_imageURLStorage[backgroundImageURLKeyForState(self.state)];
102 |
103 | if (!url) {
104 | url = self.sd_imageURLStorage[backgroundImageURLKeyForState(UIControlStateNormal)];
105 | }
106 |
107 | return url;
108 | }
109 |
110 | - (nullable NSURL *)sd_backgroundImageURLForState:(UIControlState)state {
111 | return self.sd_imageURLStorage[backgroundImageURLKeyForState(state)];
112 | }
113 |
114 | - (void)sd_setBackgroundImageWithURL:(nullable NSURL *)url forState:(UIControlState)state {
115 | [self sd_setBackgroundImageWithURL:url forState:state placeholderImage:nil options:0 completed:nil];
116 | }
117 |
118 | - (void)sd_setBackgroundImageWithURL:(nullable NSURL *)url forState:(UIControlState)state placeholderImage:(nullable UIImage *)placeholder {
119 | [self sd_setBackgroundImageWithURL:url forState:state placeholderImage:placeholder options:0 completed:nil];
120 | }
121 |
122 | - (void)sd_setBackgroundImageWithURL:(nullable NSURL *)url forState:(UIControlState)state placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options {
123 | [self sd_setBackgroundImageWithURL:url forState:state placeholderImage:placeholder options:options completed:nil];
124 | }
125 |
126 | - (void)sd_setBackgroundImageWithURL:(nullable NSURL *)url forState:(UIControlState)state completed:(nullable SDExternalCompletionBlock)completedBlock {
127 | [self sd_setBackgroundImageWithURL:url forState:state placeholderImage:nil options:0 completed:completedBlock];
128 | }
129 |
130 | - (void)sd_setBackgroundImageWithURL:(nullable NSURL *)url forState:(UIControlState)state placeholderImage:(nullable UIImage *)placeholder completed:(nullable SDExternalCompletionBlock)completedBlock {
131 | [self sd_setBackgroundImageWithURL:url forState:state placeholderImage:placeholder options:0 completed:completedBlock];
132 | }
133 |
134 | - (void)sd_setBackgroundImageWithURL:(nullable NSURL *)url
135 | forState:(UIControlState)state
136 | placeholderImage:(nullable UIImage *)placeholder
137 | options:(SDWebImageOptions)options
138 | completed:(nullable SDExternalCompletionBlock)completedBlock {
139 | if (!url) {
140 | [self.sd_imageURLStorage removeObjectForKey:backgroundImageURLKeyForState(state)];
141 | } else {
142 | self.sd_imageURLStorage[backgroundImageURLKeyForState(state)] = url;
143 | }
144 |
145 | __weak typeof(self)weakSelf = self;
146 | [self sd_internalSetImageWithURL:url
147 | placeholderImage:placeholder
148 | options:options
149 | operationKey:backgroundImageOperationKeyForState(state)
150 | setImageBlock:^(UIImage *image, NSData *imageData) {
151 | [weakSelf setBackgroundImage:image forState:state];
152 | }
153 | progress:nil
154 | completed:completedBlock];
155 | }
156 |
157 | #pragma mark - Cancel
158 |
159 | - (void)sd_cancelImageLoadForState:(UIControlState)state {
160 | [self sd_cancelImageLoadOperationWithKey:imageOperationKeyForState(state)];
161 | }
162 |
163 | - (void)sd_cancelBackgroundImageLoadForState:(UIControlState)state {
164 | [self sd_cancelImageLoadOperationWithKey:backgroundImageOperationKeyForState(state)];
165 | }
166 |
167 | #pragma mark - Private
168 |
169 | - (SDStateImageURLDictionary *)sd_imageURLStorage {
170 | SDStateImageURLDictionary *storage = objc_getAssociatedObject(self, &imageURLStorageKey);
171 | if (!storage) {
172 | storage = [NSMutableDictionary dictionary];
173 | objc_setAssociatedObject(self, &imageURLStorageKey, storage, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
174 | }
175 |
176 | return storage;
177 | }
178 |
179 | @end
180 |
181 | #endif
182 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/UIImage+ForceDecode.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | @interface UIImage (ForceDecode)
12 |
13 | + (nullable UIImage *)decodedImageWithImage:(nullable UIImage *)image;
14 |
15 | + (nullable UIImage *)decodedAndScaledDownImageWithImage:(nullable UIImage *)image;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/UIImage+ForceDecode.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "UIImage+ForceDecode.h"
10 | #import "SDWebImageCodersManager.h"
11 |
12 | @implementation UIImage (ForceDecode)
13 |
14 | + (UIImage *)decodedImageWithImage:(UIImage *)image {
15 | if (!image) {
16 | return nil;
17 | }
18 | NSData *tempData;
19 | return [[SDWebImageCodersManager sharedInstance] decompressedImageWithImage:image data:&tempData options:@{SDWebImageCoderScaleDownLargeImagesKey: @(NO)}];
20 | }
21 |
22 | + (UIImage *)decodedAndScaledDownImageWithImage:(UIImage *)image {
23 | if (!image) {
24 | return nil;
25 | }
26 | NSData *tempData;
27 | return [[SDWebImageCodersManager sharedInstance] decompressedImageWithImage:image data:&tempData options:@{SDWebImageCoderScaleDownLargeImagesKey: @(YES)}];
28 | }
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/UIImage+GIF.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Laurin Brandner
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import "SDWebImageCompat.h"
11 |
12 | @interface UIImage (GIF)
13 |
14 | /**
15 | * Creates an animated UIImage from an NSData.
16 | * For static GIF, will create an UIImage with `images` array set to nil. For animated GIF, will create an UIImage with valid `images` array.
17 | */
18 | + (UIImage *)sd_animatedGIFWithData:(NSData *)data;
19 |
20 | /**
21 | * Checks if an UIImage instance is a GIF. Will use the `images` array.
22 | */
23 | - (BOOL)isGIF;
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/UIImage+GIF.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Laurin Brandner
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import "UIImage+GIF.h"
11 | #import "SDWebImageGIFCoder.h"
12 | #import "NSImage+WebCache.h"
13 |
14 | @implementation UIImage (GIF)
15 |
16 | + (UIImage *)sd_animatedGIFWithData:(NSData *)data {
17 | if (!data) {
18 | return nil;
19 | }
20 | return [[SDWebImageGIFCoder sharedCoder] decodedImageWithData:data];
21 | }
22 |
23 | - (BOOL)isGIF {
24 | return (self.images != nil);
25 | }
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 | #import "NSData+ImageContentType.h"
11 |
12 | @interface UIImage (MultiFormat)
13 |
14 | /**
15 | * UIKit:
16 | * For static image format, this value is always 0.
17 | * For animated image format, 0 means infinite looping.
18 | * Note that because of the limitations of categories this property can get out of sync if you create another instance with CGImage or other methods.
19 | * AppKit:
20 | * NSImage currently only support animated via GIF imageRep unlike UIImage.
21 | * The getter of this property will get the loop count from GIF imageRep
22 | * The setter of this property will set the loop count from GIF imageRep
23 | */
24 | @property (nonatomic, assign) NSUInteger sd_imageLoopCount;
25 |
26 | + (nullable UIImage *)sd_imageWithData:(nullable NSData *)data;
27 | - (nullable NSData *)sd_imageData;
28 | - (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat;
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "UIImage+MultiFormat.h"
10 |
11 | #import "objc/runtime.h"
12 | #import "SDWebImageCodersManager.h"
13 |
14 | @implementation UIImage (MultiFormat)
15 |
16 | #if SD_MAC
17 | - (NSUInteger)sd_imageLoopCount {
18 | NSUInteger imageLoopCount = 0;
19 | for (NSImageRep *rep in self.representations) {
20 | if ([rep isKindOfClass:[NSBitmapImageRep class]]) {
21 | NSBitmapImageRep *bitmapRep = (NSBitmapImageRep *)rep;
22 | imageLoopCount = [[bitmapRep valueForProperty:NSImageLoopCount] unsignedIntegerValue];
23 | break;
24 | }
25 | }
26 | return imageLoopCount;
27 | }
28 |
29 | - (void)setSd_imageLoopCount:(NSUInteger)sd_imageLoopCount {
30 | for (NSImageRep *rep in self.representations) {
31 | if ([rep isKindOfClass:[NSBitmapImageRep class]]) {
32 | NSBitmapImageRep *bitmapRep = (NSBitmapImageRep *)rep;
33 | [bitmapRep setProperty:NSImageLoopCount withValue:@(sd_imageLoopCount)];
34 | break;
35 | }
36 | }
37 | }
38 |
39 | #else
40 |
41 | - (NSUInteger)sd_imageLoopCount {
42 | NSUInteger imageLoopCount = 0;
43 | NSNumber *value = objc_getAssociatedObject(self, @selector(sd_imageLoopCount));
44 | if ([value isKindOfClass:[NSNumber class]]) {
45 | imageLoopCount = value.unsignedIntegerValue;
46 | }
47 | return imageLoopCount;
48 | }
49 |
50 | - (void)setSd_imageLoopCount:(NSUInteger)sd_imageLoopCount {
51 | NSNumber *value = @(sd_imageLoopCount);
52 | objc_setAssociatedObject(self, @selector(sd_imageLoopCount), value, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
53 | }
54 | #endif
55 |
56 | + (nullable UIImage *)sd_imageWithData:(nullable NSData *)data {
57 | return [[SDWebImageCodersManager sharedInstance] decodedImageWithData:data];
58 | }
59 |
60 | - (nullable NSData *)sd_imageData {
61 | return [self sd_imageDataAsFormat:SDImageFormatUndefined];
62 | }
63 |
64 | - (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat {
65 | NSData *imageData = nil;
66 | if (self) {
67 | imageData = [[SDWebImageCodersManager sharedInstance] encodedDataWithImage:self format:imageFormat];
68 | }
69 | return imageData;
70 | }
71 |
72 |
73 | @end
74 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | #if SD_UIKIT
12 |
13 | #import "SDWebImageManager.h"
14 |
15 | /**
16 | * Integrates SDWebImage async downloading and caching of remote images with UIImageView for highlighted state.
17 | */
18 | @interface UIImageView (HighlightedWebCache)
19 |
20 | /**
21 | * Set the imageView `highlightedImage` with an `url`.
22 | *
23 | * The download is asynchronous and cached.
24 | *
25 | * @param url The url for the image.
26 | */
27 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url NS_REFINED_FOR_SWIFT;
28 |
29 | /**
30 | * Set the imageView `highlightedImage` with an `url` and custom options.
31 | *
32 | * The download is asynchronous and cached.
33 | *
34 | * @param url The url for the image.
35 | * @param options The options to use when downloading the image. @see SDWebImageOptions for the possible values.
36 | */
37 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url
38 | options:(SDWebImageOptions)options NS_REFINED_FOR_SWIFT;
39 |
40 | /**
41 | * Set the imageView `highlightedImage` with an `url`.
42 | *
43 | * The download is asynchronous and cached.
44 | *
45 | * @param url The url for the image.
46 | * @param completedBlock A block called when operation has been completed. This block has no return value
47 | * and takes the requested UIImage as first parameter. In case of error the image parameter
48 | * is nil and the second parameter may contain an NSError. The third parameter is a Boolean
49 | * indicating if the image was retrieved from the local cache or from the network.
50 | * The fourth parameter is the original image url.
51 | */
52 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url
53 | completed:(nullable SDExternalCompletionBlock)completedBlock NS_REFINED_FOR_SWIFT;
54 |
55 | /**
56 | * Set the imageView `highlightedImage` with an `url` and custom options.
57 | *
58 | * The download is asynchronous and cached.
59 | *
60 | * @param url The url for the image.
61 | * @param options The options to use when downloading the image. @see SDWebImageOptions for the possible values.
62 | * @param completedBlock A block called when operation has been completed. This block has no return value
63 | * and takes the requested UIImage as first parameter. In case of error the image parameter
64 | * is nil and the second parameter may contain an NSError. The third parameter is a Boolean
65 | * indicating if the image was retrieved from the local cache or from the network.
66 | * The fourth parameter is the original image url.
67 | */
68 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url
69 | options:(SDWebImageOptions)options
70 | completed:(nullable SDExternalCompletionBlock)completedBlock;
71 |
72 | /**
73 | * Set the imageView `highlightedImage` with an `url` and custom options.
74 | *
75 | * The download is asynchronous and cached.
76 | *
77 | * @param url The url for the image.
78 | * @param options The options to use when downloading the image. @see SDWebImageOptions for the possible values.
79 | * @param progressBlock A block called while image is downloading
80 | * @note the progress block is executed on a background queue
81 | * @param completedBlock A block called when operation has been completed. This block has no return value
82 | * and takes the requested UIImage as first parameter. In case of error the image parameter
83 | * is nil and the second parameter may contain an NSError. The third parameter is a Boolean
84 | * indicating if the image was retrieved from the local cache or from the network.
85 | * The fourth parameter is the original image url.
86 | */
87 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url
88 | options:(SDWebImageOptions)options
89 | progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
90 | completed:(nullable SDExternalCompletionBlock)completedBlock;
91 |
92 | @end
93 |
94 | #endif
95 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "UIImageView+HighlightedWebCache.h"
10 |
11 | #if SD_UIKIT
12 |
13 | #import "UIView+WebCacheOperation.h"
14 | #import "UIView+WebCache.h"
15 |
16 | @implementation UIImageView (HighlightedWebCache)
17 |
18 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url {
19 | [self sd_setHighlightedImageWithURL:url options:0 progress:nil completed:nil];
20 | }
21 |
22 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url options:(SDWebImageOptions)options {
23 | [self sd_setHighlightedImageWithURL:url options:options progress:nil completed:nil];
24 | }
25 |
26 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url completed:(nullable SDExternalCompletionBlock)completedBlock {
27 | [self sd_setHighlightedImageWithURL:url options:0 progress:nil completed:completedBlock];
28 | }
29 |
30 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url options:(SDWebImageOptions)options completed:(nullable SDExternalCompletionBlock)completedBlock {
31 | [self sd_setHighlightedImageWithURL:url options:options progress:nil completed:completedBlock];
32 | }
33 |
34 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url
35 | options:(SDWebImageOptions)options
36 | progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
37 | completed:(nullable SDExternalCompletionBlock)completedBlock {
38 | __weak typeof(self)weakSelf = self;
39 | [self sd_internalSetImageWithURL:url
40 | placeholderImage:nil
41 | options:options
42 | operationKey:@"UIImageViewImageOperationHighlighted"
43 | setImageBlock:^(UIImage *image, NSData *imageData) {
44 | weakSelf.highlightedImage = image;
45 | }
46 | progress:progressBlock
47 | completed:completedBlock];
48 | }
49 |
50 | @end
51 |
52 | #endif
53 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/UIImageView+WebCache.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "UIImageView+WebCache.h"
10 |
11 | #if SD_UIKIT || SD_MAC
12 |
13 | #import "objc/runtime.h"
14 | #import "UIView+WebCacheOperation.h"
15 | #import "UIView+WebCache.h"
16 |
17 | @implementation UIImageView (WebCache)
18 |
19 | - (void)sd_setImageWithURL:(nullable NSURL *)url {
20 | [self sd_setImageWithURL:url placeholderImage:nil options:0 progress:nil completed:nil];
21 | }
22 |
23 | - (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder {
24 | [self sd_setImageWithURL:url placeholderImage:placeholder options:0 progress:nil completed:nil];
25 | }
26 |
27 | - (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options {
28 | [self sd_setImageWithURL:url placeholderImage:placeholder options:options progress:nil completed:nil];
29 | }
30 |
31 | - (void)sd_setImageWithURL:(nullable NSURL *)url completed:(nullable SDExternalCompletionBlock)completedBlock {
32 | [self sd_setImageWithURL:url placeholderImage:nil options:0 progress:nil completed:completedBlock];
33 | }
34 |
35 | - (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder completed:(nullable SDExternalCompletionBlock)completedBlock {
36 | [self sd_setImageWithURL:url placeholderImage:placeholder options:0 progress:nil completed:completedBlock];
37 | }
38 |
39 | - (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options completed:(nullable SDExternalCompletionBlock)completedBlock {
40 | [self sd_setImageWithURL:url placeholderImage:placeholder options:options progress:nil completed:completedBlock];
41 | }
42 |
43 | - (void)sd_setImageWithURL:(nullable NSURL *)url
44 | placeholderImage:(nullable UIImage *)placeholder
45 | options:(SDWebImageOptions)options
46 | progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
47 | completed:(nullable SDExternalCompletionBlock)completedBlock {
48 | [self sd_internalSetImageWithURL:url
49 | placeholderImage:placeholder
50 | options:options
51 | operationKey:nil
52 | setImageBlock:nil
53 | progress:progressBlock
54 | completed:completedBlock];
55 | }
56 |
57 | - (void)sd_setImageWithPreviousCachedImageWithURL:(nullable NSURL *)url
58 | placeholderImage:(nullable UIImage *)placeholder
59 | options:(SDWebImageOptions)options
60 | progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
61 | completed:(nullable SDExternalCompletionBlock)completedBlock {
62 | NSString *key = [[SDWebImageManager sharedManager] cacheKeyForURL:url];
63 | UIImage *lastPreviousCachedImage = [[SDImageCache sharedImageCache] imageFromCacheForKey:key];
64 |
65 | [self sd_setImageWithURL:url placeholderImage:lastPreviousCachedImage ?: placeholder options:options progress:progressBlock completed:completedBlock];
66 | }
67 |
68 | #if SD_UIKIT
69 |
70 | #pragma mark - Animation of multiple images
71 |
72 | - (void)sd_setAnimationImagesWithURLs:(nonnull NSArray *)arrayOfURLs {
73 | [self sd_cancelCurrentAnimationImagesLoad];
74 | NSPointerArray *operationsArray = [self sd_animationOperationArray];
75 |
76 | [arrayOfURLs enumerateObjectsUsingBlock:^(NSURL *logoImageURL, NSUInteger idx, BOOL * _Nonnull stop) {
77 | __weak __typeof(self) wself = self;
78 | id operation = [[SDWebImageManager sharedManager] loadImageWithURL:logoImageURL options:0 progress:nil completed:^(UIImage *image, NSData *data, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
79 | __strong typeof(wself) sself = wself;
80 | if (!sself) return;
81 | dispatch_main_async_safe(^{
82 | [sself stopAnimating];
83 | if (sself && image) {
84 | NSMutableArray *currentImages = [[sself animationImages] mutableCopy];
85 | if (!currentImages) {
86 | currentImages = [[NSMutableArray alloc] init];
87 | }
88 |
89 | // We know what index objects should be at when they are returned so
90 | // we will put the object at the index, filling any empty indexes
91 | // with the image that was returned too "early". These images will
92 | // be overwritten. (does not require additional sorting datastructure)
93 | while ([currentImages count] < idx) {
94 | [currentImages addObject:image];
95 | }
96 |
97 | currentImages[idx] = image;
98 |
99 | sself.animationImages = currentImages;
100 | [sself setNeedsLayout];
101 | }
102 | [sself startAnimating];
103 | });
104 | }];
105 | @synchronized (self) {
106 | [operationsArray addPointer:(__bridge void *)(operation)];
107 | }
108 | }];
109 | }
110 |
111 | static char animationLoadOperationKey;
112 |
113 | // element is weak because operation instance is retained by SDWebImageManager's runningOperations property
114 | // we should use lock to keep thread-safe because these method may not be acessed from main queue
115 | - (NSPointerArray *)sd_animationOperationArray {
116 | @synchronized(self) {
117 | NSPointerArray *operationsArray = objc_getAssociatedObject(self, &animationLoadOperationKey);
118 | if (operationsArray) {
119 | return operationsArray;
120 | }
121 | operationsArray = [NSPointerArray weakObjectsPointerArray];
122 | objc_setAssociatedObject(self, &animationLoadOperationKey, operationsArray, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
123 | return operationsArray;
124 | }
125 | }
126 |
127 | - (void)sd_cancelCurrentAnimationImagesLoad {
128 | NSPointerArray *operationsArray = [self sd_animationOperationArray];
129 | if (operationsArray) {
130 | @synchronized (self) {
131 | for (id operation in operationsArray) {
132 | if ([operation conformsToProtocol:@protocol(SDWebImageOperation)]) {
133 | [operation cancel];
134 | }
135 | }
136 | operationsArray.count = 0;
137 | }
138 | }
139 | }
140 | #endif
141 |
142 | @end
143 |
144 | #endif
145 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/UIView+WebCache.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | #if SD_UIKIT || SD_MAC
12 |
13 | #import "SDWebImageManager.h"
14 | #import "SDWebImageTransition.h"
15 |
16 | /**
17 | A Dispatch group to maintain setImageBlock and completionBlock. This key should be used only internally and may be changed in the future. (dispatch_group_t)
18 | */
19 | FOUNDATION_EXPORT NSString * _Nonnull const SDWebImageInternalSetImageGroupKey;
20 | /**
21 | A SDWebImageManager instance to control the image download and cache process using in UIImageView+WebCache category and likes. If not provided, use the shared manager (SDWebImageManager)
22 | */
23 | FOUNDATION_EXPORT NSString * _Nonnull const SDWebImageExternalCustomManagerKey;
24 | /**
25 | The value specify that the image progress unit count cannot be determined because the progressBlock is not been called.
26 | */
27 | FOUNDATION_EXPORT const int64_t SDWebImageProgressUnitCountUnknown; /* 1LL */
28 |
29 | typedef void(^SDSetImageBlock)(UIImage * _Nullable image, NSData * _Nullable imageData);
30 |
31 | @interface UIView (WebCache)
32 |
33 | /**
34 | * Get the current image URL.
35 | *
36 | * @note Note that because of the limitations of categories this property can get out of sync if you use setImage: directly.
37 | */
38 | - (nullable NSURL *)sd_imageURL;
39 |
40 | /**
41 | * The current image loading progress associated to the view. The unit count is the received size and excepted size of download.
42 | * The `totalUnitCount` and `completedUnitCount` will be reset to 0 after a new image loading start (change from current queue). And they will be set to `SDWebImageProgressUnitCountUnknown` if the progressBlock not been called but the image loading success to mark the progress finished (change from main queue).
43 | * @note You can use Key-Value Observing on the progress, but you should take care that the change to progress is from a background queue during download(the same as progressBlock). If you want to using KVO and update the UI, make sure to dispatch on the main queue. And it's recommand to use some KVO libs like KVOController because it's more safe and easy to use.
44 | * @note The getter will create a progress instance if the value is nil. You can also set a custom progress instance and let it been updated during image loading
45 | * @note Note that because of the limitations of categories this property can get out of sync if you update the progress directly.
46 | */
47 | @property (nonatomic, strong, null_resettable) NSProgress *sd_imageProgress;
48 |
49 | /**
50 | * Set the imageView `image` with an `url` and optionally a placeholder image.
51 | *
52 | * The download is asynchronous and cached.
53 | *
54 | * @param url The url for the image.
55 | * @param placeholder The image to be set initially, until the image request finishes.
56 | * @param options The options to use when downloading the image. @see SDWebImageOptions for the possible values.
57 | * @param operationKey A string to be used as the operation key. If nil, will use the class name
58 | * @param setImageBlock Block used for custom set image code
59 | * @param progressBlock A block called while image is downloading
60 | * @note the progress block is executed on a background queue
61 | * @param completedBlock A block called when operation has been completed. This block has no return value
62 | * and takes the requested UIImage as first parameter. In case of error the image parameter
63 | * is nil and the second parameter may contain an NSError. The third parameter is a Boolean
64 | * indicating if the image was retrieved from the local cache or from the network.
65 | * The fourth parameter is the original image url.
66 | */
67 | - (void)sd_internalSetImageWithURL:(nullable NSURL *)url
68 | placeholderImage:(nullable UIImage *)placeholder
69 | options:(SDWebImageOptions)options
70 | operationKey:(nullable NSString *)operationKey
71 | setImageBlock:(nullable SDSetImageBlock)setImageBlock
72 | progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
73 | completed:(nullable SDExternalCompletionBlock)completedBlock;
74 |
75 | /**
76 | * Set the imageView `image` with an `url` and optionally a placeholder image.
77 | *
78 | * The download is asynchronous and cached.
79 | *
80 | * @param url The url for the image.
81 | * @param placeholder The image to be set initially, until the image request finishes.
82 | * @param options The options to use when downloading the image. @see SDWebImageOptions for the possible values.
83 | * @param operationKey A string to be used as the operation key. If nil, will use the class name
84 | * @param setImageBlock Block used for custom set image code
85 | * @param progressBlock A block called while image is downloading
86 | * @note the progress block is executed on a background queue
87 | * @param completedBlock A block called when operation has been completed. This block has no return value
88 | * and takes the requested UIImage as first parameter. In case of error the image parameter
89 | * is nil and the second parameter may contain an NSError. The third parameter is a Boolean
90 | * indicating if the image was retrieved from the local cache or from the network.
91 | * The fourth parameter is the original image url.
92 | * @param context A context with extra information to perform specify changes or processes.
93 | */
94 | - (void)sd_internalSetImageWithURL:(nullable NSURL *)url
95 | placeholderImage:(nullable UIImage *)placeholder
96 | options:(SDWebImageOptions)options
97 | operationKey:(nullable NSString *)operationKey
98 | setImageBlock:(nullable SDSetImageBlock)setImageBlock
99 | progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
100 | completed:(nullable SDExternalCompletionBlock)completedBlock
101 | context:(nullable NSDictionary *)context;
102 |
103 | /**
104 | * Cancel the current image load
105 | */
106 | - (void)sd_cancelCurrentImageLoad;
107 |
108 | #pragma mark - Image Transition
109 |
110 | /**
111 | The image transition when image load finished. See `SDWebImageTransition`.
112 | If you specify nil, do not do transition. Defautls to nil.
113 | */
114 | @property (nonatomic, strong, nullable) SDWebImageTransition *sd_imageTransition;
115 |
116 | #if SD_UIKIT
117 |
118 | #pragma mark - Activity indicator
119 |
120 | /**
121 | * Show activity UIActivityIndicatorView
122 | */
123 | - (void)sd_setShowActivityIndicatorView:(BOOL)show;
124 |
125 | /**
126 | * set desired UIActivityIndicatorViewStyle
127 | *
128 | * @param style The style of the UIActivityIndicatorView
129 | */
130 | - (void)sd_setIndicatorStyle:(UIActivityIndicatorViewStyle)style;
131 |
132 | - (BOOL)sd_showActivityIndicatorView;
133 | - (void)sd_addActivityIndicator;
134 | - (void)sd_removeActivityIndicator;
135 |
136 | #endif
137 |
138 | @end
139 |
140 | #endif
141 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/UIView+WebCacheOperation.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | #if SD_UIKIT || SD_MAC
12 |
13 | #import "SDWebImageManager.h"
14 |
15 | // These methods are used to support canceling for UIView image loading, it's designed to be used internal but not external.
16 | // All the stored operations are weak, so it will be dalloced after image loading finished. If you need to store operations, use your own class to keep a strong reference for them.
17 | @interface UIView (WebCacheOperation)
18 |
19 | /**
20 | * Set the image load operation (storage in a UIView based weak map table)
21 | *
22 | * @param operation the operation
23 | * @param key key for storing the operation
24 | */
25 | - (void)sd_setImageLoadOperation:(nullable id)operation forKey:(nullable NSString *)key;
26 |
27 | /**
28 | * Cancel all operations for the current UIView and key
29 | *
30 | * @param key key for identifying the operations
31 | */
32 | - (void)sd_cancelImageLoadOperationWithKey:(nullable NSString *)key;
33 |
34 | /**
35 | * Just remove the operations corresponding to the current UIView and key without cancelling them
36 | *
37 | * @param key key for identifying the operations
38 | */
39 | - (void)sd_removeImageLoadOperationWithKey:(nullable NSString *)key;
40 |
41 | @end
42 |
43 | #endif
44 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/SDWebImage/SDWebImage/UIView+WebCacheOperation.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "UIView+WebCacheOperation.h"
10 |
11 | #if SD_UIKIT || SD_MAC
12 |
13 | #import "objc/runtime.h"
14 |
15 | static char loadOperationKey;
16 |
17 | // key is copy, value is weak because operation instance is retained by SDWebImageManager's runningOperations property
18 | // we should use lock to keep thread-safe because these method may not be acessed from main queue
19 | typedef NSMapTable> SDOperationsDictionary;
20 |
21 | @implementation UIView (WebCacheOperation)
22 |
23 | - (SDOperationsDictionary *)sd_operationDictionary {
24 | @synchronized(self) {
25 | SDOperationsDictionary *operations = objc_getAssociatedObject(self, &loadOperationKey);
26 | if (operations) {
27 | return operations;
28 | }
29 | operations = [[NSMapTable alloc] initWithKeyOptions:NSPointerFunctionsStrongMemory valueOptions:NSPointerFunctionsWeakMemory capacity:0];
30 | objc_setAssociatedObject(self, &loadOperationKey, operations, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
31 | return operations;
32 | }
33 | }
34 |
35 | - (void)sd_setImageLoadOperation:(nullable id)operation forKey:(nullable NSString *)key {
36 | if (key) {
37 | [self sd_cancelImageLoadOperationWithKey:key];
38 | if (operation) {
39 | SDOperationsDictionary *operationDictionary = [self sd_operationDictionary];
40 | @synchronized (self) {
41 | [operationDictionary setObject:operation forKey:key];
42 | }
43 | }
44 | }
45 | }
46 |
47 | - (void)sd_cancelImageLoadOperationWithKey:(nullable NSString *)key {
48 | // Cancel in progress downloader from queue
49 | SDOperationsDictionary *operationDictionary = [self sd_operationDictionary];
50 | id operation;
51 | @synchronized (self) {
52 | operation = [operationDictionary objectForKey:key];
53 | }
54 | if (operation) {
55 | if ([operation conformsToProtocol:@protocol(SDWebImageOperation)]){
56 | [operation cancel];
57 | }
58 | @synchronized (self) {
59 | [operationDictionary removeObjectForKey:key];
60 | }
61 | }
62 | }
63 |
64 | - (void)sd_removeImageLoadOperationWithKey:(nullable NSString *)key {
65 | if (key) {
66 | SDOperationsDictionary *operationDictionary = [self sd_operationDictionary];
67 | @synchronized (self) {
68 | [operationDictionary removeObjectForKey:key];
69 | }
70 | }
71 | }
72 |
73 | @end
74 |
75 | #endif
76 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Target Support Files/Pods-TinderProfile/Pods-TinderProfile-acknowledgements.markdown:
--------------------------------------------------------------------------------
1 | # Acknowledgements
2 | This application makes use of the following third party libraries:
3 |
4 | ## PureLayout
5 |
6 | This code is distributed under the terms and conditions of the MIT license.
7 |
8 | Copyright (c) 2014-2015 Tyler Fox
9 |
10 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
15 |
16 |
17 | ## SDWebImage
18 |
19 | Copyright (c) 2009-2017 Olivier Poitrey rs@dailymotion.com
20 |
21 | Permission is hereby granted, free of charge, to any person obtaining a copy
22 | of this software and associated documentation files (the "Software"), to deal
23 | in the Software without restriction, including without limitation the rights
24 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
25 | copies of the Software, and to permit persons to whom the Software is furnished
26 | to do so, subject to the following conditions:
27 |
28 | The above copyright notice and this permission notice shall be included in all
29 | copies or substantial portions of the Software.
30 |
31 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
32 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
33 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
34 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
35 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
36 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
37 | THE SOFTWARE.
38 |
39 |
40 | Generated by CocoaPods - https://cocoapods.org
41 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Target Support Files/Pods-TinderProfile/Pods-TinderProfile-acknowledgements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreferenceSpecifiers
6 |
7 |
8 | FooterText
9 | This application makes use of the following third party libraries:
10 | Title
11 | Acknowledgements
12 | Type
13 | PSGroupSpecifier
14 |
15 |
16 | FooterText
17 | This code is distributed under the terms and conditions of the MIT license.
18 |
19 | Copyright (c) 2014-2015 Tyler Fox
20 |
21 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
22 |
23 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
24 |
25 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26 |
27 | License
28 | MIT
29 | Title
30 | PureLayout
31 | Type
32 | PSGroupSpecifier
33 |
34 |
35 | FooterText
36 | Copyright (c) 2009-2017 Olivier Poitrey rs@dailymotion.com
37 |
38 | Permission is hereby granted, free of charge, to any person obtaining a copy
39 | of this software and associated documentation files (the "Software"), to deal
40 | in the Software without restriction, including without limitation the rights
41 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
42 | copies of the Software, and to permit persons to whom the Software is furnished
43 | to do so, subject to the following conditions:
44 |
45 | The above copyright notice and this permission notice shall be included in all
46 | copies or substantial portions of the Software.
47 |
48 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
49 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
50 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
51 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
52 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
53 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
54 | THE SOFTWARE.
55 |
56 |
57 | License
58 | MIT
59 | Title
60 | SDWebImage
61 | Type
62 | PSGroupSpecifier
63 |
64 |
65 | FooterText
66 | Generated by CocoaPods - https://cocoapods.org
67 | Title
68 |
69 | Type
70 | PSGroupSpecifier
71 |
72 |
73 | StringsTable
74 | Acknowledgements
75 | Title
76 | Acknowledgements
77 |
78 |
79 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Target Support Files/Pods-TinderProfile/Pods-TinderProfile-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_TinderProfile : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_TinderProfile
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Target Support Files/Pods-TinderProfile/Pods-TinderProfile-frameworks.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | set -e
3 | set -u
4 | set -o pipefail
5 |
6 | if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then
7 | # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy
8 | # frameworks to, so exit 0 (signalling the script phase was successful).
9 | exit 0
10 | fi
11 |
12 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
13 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
14 |
15 | COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}"
16 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
17 |
18 | # Used as a return value for each invocation of `strip_invalid_archs` function.
19 | STRIP_BINARY_RETVAL=0
20 |
21 | # This protects against multiple targets copying the same framework dependency at the same time. The solution
22 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
23 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
24 |
25 | # Copies and strips a vendored framework
26 | install_framework()
27 | {
28 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
29 | local source="${BUILT_PRODUCTS_DIR}/$1"
30 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then
31 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
32 | elif [ -r "$1" ]; then
33 | local source="$1"
34 | fi
35 |
36 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
37 |
38 | if [ -L "${source}" ]; then
39 | echo "Symlinked..."
40 | source="$(readlink "${source}")"
41 | fi
42 |
43 | # Use filter instead of exclude so missing patterns don't throw errors.
44 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
45 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
46 |
47 | local basename
48 | basename="$(basename -s .framework "$1")"
49 | binary="${destination}/${basename}.framework/${basename}"
50 | if ! [ -r "$binary" ]; then
51 | binary="${destination}/${basename}"
52 | fi
53 |
54 | # Strip invalid architectures so "fat" simulator / device frameworks work on device
55 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then
56 | strip_invalid_archs "$binary"
57 | fi
58 |
59 | # Resign the code if required by the build settings to avoid unstable apps
60 | code_sign_if_enabled "${destination}/$(basename "$1")"
61 |
62 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
63 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
64 | local swift_runtime_libs
65 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]})
66 | for lib in $swift_runtime_libs; do
67 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
68 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
69 | code_sign_if_enabled "${destination}/${lib}"
70 | done
71 | fi
72 | }
73 |
74 | # Copies and strips a vendored dSYM
75 | install_dsym() {
76 | local source="$1"
77 | if [ -r "$source" ]; then
78 | # Copy the dSYM into a the targets temp dir.
79 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\""
80 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}"
81 |
82 | local basename
83 | basename="$(basename -s .framework.dSYM "$source")"
84 | binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}"
85 |
86 | # Strip invalid architectures so "fat" simulator / device frameworks work on device
87 | if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then
88 | strip_invalid_archs "$binary"
89 | fi
90 |
91 | if [[ $STRIP_BINARY_RETVAL == 1 ]]; then
92 | # Move the stripped file into its final destination.
93 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
94 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
95 | else
96 | # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.
97 | touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM"
98 | fi
99 | fi
100 | }
101 |
102 | # Signs a framework with the provided identity
103 | code_sign_if_enabled() {
104 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
105 | # Use the current code_sign_identitiy
106 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
107 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'"
108 |
109 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
110 | code_sign_cmd="$code_sign_cmd &"
111 | fi
112 | echo "$code_sign_cmd"
113 | eval "$code_sign_cmd"
114 | fi
115 | }
116 |
117 | # Strip invalid architectures
118 | strip_invalid_archs() {
119 | binary="$1"
120 | # Get architectures for current target binary
121 | binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
122 | # Intersect them with the architectures we are building for
123 | intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"
124 | # If there are no archs supported by this binary then warn the user
125 | if [[ -z "$intersected_archs" ]]; then
126 | echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
127 | STRIP_BINARY_RETVAL=0
128 | return
129 | fi
130 | stripped=""
131 | for arch in $binary_archs; do
132 | if ! [[ "${ARCHS}" == *"$arch"* ]]; then
133 | # Strip non-valid architectures in-place
134 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1
135 | stripped="$stripped $arch"
136 | fi
137 | done
138 | if [[ "$stripped" ]]; then
139 | echo "Stripped $binary of architectures:$stripped"
140 | fi
141 | STRIP_BINARY_RETVAL=1
142 | }
143 |
144 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
145 | wait
146 | fi
147 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Target Support Files/Pods-TinderProfile/Pods-TinderProfile-resources.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | set -e
3 | set -u
4 | set -o pipefail
5 |
6 | if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then
7 | # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy
8 | # resources to, so exit 0 (signalling the script phase was successful).
9 | exit 0
10 | fi
11 |
12 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
13 |
14 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
15 | > "$RESOURCES_TO_COPY"
16 |
17 | XCASSET_FILES=()
18 |
19 | # This protects against multiple targets copying the same framework dependency at the same time. The solution
20 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
21 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
22 |
23 | case "${TARGETED_DEVICE_FAMILY:-}" in
24 | 1,2)
25 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
26 | ;;
27 | 1)
28 | TARGET_DEVICE_ARGS="--target-device iphone"
29 | ;;
30 | 2)
31 | TARGET_DEVICE_ARGS="--target-device ipad"
32 | ;;
33 | 3)
34 | TARGET_DEVICE_ARGS="--target-device tv"
35 | ;;
36 | 4)
37 | TARGET_DEVICE_ARGS="--target-device watch"
38 | ;;
39 | *)
40 | TARGET_DEVICE_ARGS="--target-device mac"
41 | ;;
42 | esac
43 |
44 | install_resource()
45 | {
46 | if [[ "$1" = /* ]] ; then
47 | RESOURCE_PATH="$1"
48 | else
49 | RESOURCE_PATH="${PODS_ROOT}/$1"
50 | fi
51 | if [[ ! -e "$RESOURCE_PATH" ]] ; then
52 | cat << EOM
53 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script.
54 | EOM
55 | exit 1
56 | fi
57 | case $RESOURCE_PATH in
58 | *.storyboard)
59 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
60 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
61 | ;;
62 | *.xib)
63 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
64 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
65 | ;;
66 | *.framework)
67 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
68 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
69 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
70 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
71 | ;;
72 | *.xcdatamodel)
73 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true
74 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
75 | ;;
76 | *.xcdatamodeld)
77 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true
78 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
79 | ;;
80 | *.xcmappingmodel)
81 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true
82 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
83 | ;;
84 | *.xcassets)
85 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH"
86 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
87 | ;;
88 | *)
89 | echo "$RESOURCE_PATH" || true
90 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
91 | ;;
92 | esac
93 | }
94 |
95 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
96 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
97 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then
98 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
99 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
100 | fi
101 | rm -f "$RESOURCES_TO_COPY"
102 |
103 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ]
104 | then
105 | # Find all other xcassets (this unfortunately includes those of path pods and other targets).
106 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
107 | while read line; do
108 | if [[ $line != "${PODS_ROOT}*" ]]; then
109 | XCASSET_FILES+=("$line")
110 | fi
111 | done <<<"$OTHER_XCASSETS"
112 |
113 | if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then
114 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
115 | else
116 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_BUILD_DIR}/assetcatalog_generated_info.plist"
117 | fi
118 | fi
119 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Target Support Files/Pods-TinderProfile/Pods-TinderProfile.debug.xcconfig:
--------------------------------------------------------------------------------
1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/PureLayout" "${PODS_ROOT}/Headers/Public/SDWebImage"
3 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/PureLayout" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage"
4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/PureLayout" -isystem "${PODS_ROOT}/Headers/Public/SDWebImage"
5 | OTHER_LDFLAGS = $(inherited) -ObjC -l"PureLayout" -l"SDWebImage" -framework "ImageIO"
6 | PODS_BUILD_DIR = ${BUILD_DIR}
7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
9 | PODS_ROOT = ${SRCROOT}/Pods
10 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Target Support Files/Pods-TinderProfile/Pods-TinderProfile.release.xcconfig:
--------------------------------------------------------------------------------
1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/PureLayout" "${PODS_ROOT}/Headers/Public/SDWebImage"
3 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/PureLayout" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage"
4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/PureLayout" -isystem "${PODS_ROOT}/Headers/Public/SDWebImage"
5 | OTHER_LDFLAGS = $(inherited) -ObjC -l"PureLayout" -l"SDWebImage" -framework "ImageIO"
6 | PODS_BUILD_DIR = ${BUILD_DIR}
7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
9 | PODS_ROOT = ${SRCROOT}/Pods
10 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Target Support Files/PureLayout/PureLayout-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_PureLayout : NSObject
3 | @end
4 | @implementation PodsDummy_PureLayout
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Target Support Files/PureLayout/PureLayout-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Target Support Files/PureLayout/PureLayout.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/PureLayout
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/PureLayout" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/PureLayout"
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/PureLayout
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_SDWebImage : NSObject
3 | @end
4 | @implementation PodsDummy_SDWebImage
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Target Support Files/SDWebImage/SDWebImage-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Example/TinderProfile/Pods/Target Support Files/SDWebImage/SDWebImage.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SDWebImage" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SDWebImage"
4 | OTHER_LDFLAGS = -framework "ImageIO"
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SDWebImage
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 |
--------------------------------------------------------------------------------
/Example/TinderProfile/TinderProfile.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Example/TinderProfile/TinderProfile.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Example/TinderProfile/TinderProfile.xcodeproj/project.xcworkspace/xcuserdata/souvick.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/souvickcse/TinderUserProfile/7453bbdbd046e887256379492109d6de07184c7e/Example/TinderProfile/TinderProfile.xcodeproj/project.xcworkspace/xcuserdata/souvick.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/Example/TinderProfile/TinderProfile.xcodeproj/xcuserdata/souvick.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | TinderProfile.xcscheme
8 |
9 | orderHint
10 | 3
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Example/TinderProfile/TinderProfile.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Example/TinderProfile/TinderProfile.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Example/TinderProfile/TinderProfile.xcworkspace/xcuserdata/souvick.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/souvickcse/TinderUserProfile/7453bbdbd046e887256379492109d6de07184c7e/Example/TinderProfile/TinderProfile.xcworkspace/xcuserdata/souvick.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/Example/TinderProfile/TinderProfile.xcworkspace/xcuserdata/souvick.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/Example/TinderProfile/TinderProfile/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // TinderProfile
4 | //
5 | // Created by souvick on 12/04/18.
6 | // Copyright © 2018 souvick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/Example/TinderProfile/TinderProfile/AppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.m
3 | // TinderProfile
4 | //
5 | // Created by souvick on 12/04/18.
6 | // Copyright © 2018 souvick. All rights reserved.
7 | //
8 |
9 | #import "AppDelegate.h"
10 |
11 | @interface AppDelegate ()
12 |
13 | @end
14 |
15 | @implementation AppDelegate
16 |
17 |
18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
19 | // Override point for customization after application launch.
20 | return YES;
21 | }
22 |
23 |
24 | - (void)applicationWillResignActive:(UIApplication *)application {
25 | // 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.
26 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
27 | }
28 |
29 |
30 | - (void)applicationDidEnterBackground:(UIApplication *)application {
31 | // 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.
32 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
33 | }
34 |
35 |
36 | - (void)applicationWillEnterForeground:(UIApplication *)application {
37 | // 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.
38 | }
39 |
40 |
41 | - (void)applicationDidBecomeActive:(UIApplication *)application {
42 | // 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.
43 | }
44 |
45 |
46 | - (void)applicationWillTerminate:(UIApplication *)application {
47 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
48 | }
49 |
50 |
51 | @end
52 |
--------------------------------------------------------------------------------
/Example/TinderProfile/TinderProfile/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 | }
--------------------------------------------------------------------------------
/Example/TinderProfile/TinderProfile/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Example/TinderProfile/TinderProfile/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 |
--------------------------------------------------------------------------------
/Example/TinderProfile/TinderProfile/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 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/Example/TinderProfile/TinderProfile/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 | UISupportedInterfaceOrientations
32 |
33 | UIInterfaceOrientationPortrait
34 |
35 | UISupportedInterfaceOrientations~ipad
36 |
37 | UIInterfaceOrientationPortrait
38 | UIInterfaceOrientationPortraitUpsideDown
39 | UIInterfaceOrientationLandscapeLeft
40 | UIInterfaceOrientationLandscapeRight
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/Example/TinderProfile/TinderProfile/ProfileView/ProfileView.h:
--------------------------------------------------------------------------------
1 | #import
2 | @interface ProfileView : UIView
3 | @property (strong, nonatomic) UIView *viewImageHolder;
4 | @property (strong, nonatomic) UIView *viewUserDetails;
5 | @property float paddingProfileView;
6 | @property float heightProfileView;
7 | @property BOOL isUserDetailsOn;
8 | @property NSLayoutConstraint *constraintUserViewHeight;
9 | @property (strong, nonatomic) NSMutableArray *arrImages;
10 | @property (strong, nonatomic) NSMutableArray *arrImageViews;
11 | @property (strong, nonatomic) UITableView *tblPageControl;
12 | - (void)setUpImageViewWithImageArr:(NSArray *)arrImg userDetails:(NSDictionary *)userDetails;
13 | @end
14 |
--------------------------------------------------------------------------------
/Example/TinderProfile/TinderProfile/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // TinderProfile
4 | //
5 | // Created by souvick on 12/04/18.
6 | // Copyright © 2018 souvick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/Example/TinderProfile/TinderProfile/ViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.m
3 | // TinderProfile
4 | //
5 | // Created by souvick on 12/04/18.
6 | // Copyright © 2018 souvick. All rights reserved.
7 | //
8 |
9 | #import "ViewController.h"
10 | #import "ProfileView.h"
11 | @interface ViewController ()
12 | @property (weak, nonatomic) IBOutlet ProfileView *profileView;
13 | @end
14 |
15 | @implementation ViewController
16 |
17 | - (void)viewDidLoad {
18 | [super viewDidLoad];
19 | // Do any additional setup after loading the view, typically from a nib.
20 | [_profileView setUpImageViewWithImageArr:@[@"https://picsum.photos/600/900/?image=180",
21 | @"https://picsum.photos/600/900/?image=152",
22 | @"https://picsum.photos/600/900/?image=432",
23 | @"https://picsum.photos/600/900/?image=48",
24 | ] userDetails:@{@"name":@"Souvick",
25 | @"gender":@"Male",
26 | @"like":@"10k Likes",
27 | @"distance":@"20",
28 | }];
29 | }
30 |
31 |
32 | - (void)didReceiveMemoryWarning {
33 | [super didReceiveMemoryWarning];
34 | // Dispose of any resources that can be recreated.
35 | }
36 |
37 |
38 | @end
39 |
--------------------------------------------------------------------------------
/Example/TinderProfile/TinderProfile/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // TinderProfile
4 | //
5 | // Created by souvick on 12/04/18.
6 | // Copyright © 2018 souvick. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/ProfileView/ProfileView.h:
--------------------------------------------------------------------------------
1 | #import
2 | @interface ProfileView : UIView
3 | @property (strong, nonatomic) UIView *viewImageHolder;
4 | @property (strong, nonatomic) UIView *viewUserDetails;
5 | @property float paddingProfileView;
6 | @property float heightProfileView;
7 | @property BOOL isUserDetailsOn;
8 | @property NSLayoutConstraint *constraintUserViewHeight;
9 | @property (strong, nonatomic) NSMutableArray *arrImages;
10 | @property (strong, nonatomic) NSMutableArray *arrImageViews;
11 | @property (strong, nonatomic) UITableView *tblPageControl;
12 | - (void)setUpImageViewWithImageArr:(NSArray *)arrImg userDetails:(NSDictionary *)userDetails;
13 | @end
14 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # TinderUserProfile
2 | ## Tinder/Bumble like user image with user details scroll animation
3 |
4 | 
5 | * Add ProfileView.m,ProfileView.h class to your project.
6 | * Set the class of the UiView to ProfileView. You need to have PureLayout & SDWebImage.
7 | * Call to this to populate the image list: `- (void)setUpImageViewWithImageArr:(NSArray *)arrImg userDetails:(NSDictionary *)userDetails;`
8 |
9 | **arrImg** have the list of the links of the images.
10 |
11 | **userDetails** have the user details for showing in the user details part. Please check `- (void)designUserProfile:(NSDictionary *)userDetails` for modifing the key value of the dictionary and ui of the user details.
12 |
13 | It is using PureLayout for adding autolayout. And SDWebImage for downloading the images.
14 |
--------------------------------------------------------------------------------
/ScreenRecording.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/souvickcse/TinderUserProfile/7453bbdbd046e887256379492109d6de07184c7e/ScreenRecording.gif
--------------------------------------------------------------------------------