diff --git a/.travis.yml b/.travis.yml index 3fcde602..9d46b2a9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,4 @@ -osx_image: xcode9.2 +osx_image: xcode10 language: objective-c sudo: required @@ -16,10 +16,10 @@ env: - WORKSPACE="DZNEmptyDataSet/DZNEmptyDataSet.xcworkspace" - IOS_SCHEME="DZNEmptyDataSet" - - IOS_SDK="iphonesimulator11.2" + - IOS_SDK="iphonesimulator12.0" matrix: - - DESTINATION="OS=11.2,name=iPhone 8" SDK="$IOS_SDK" SCHEME="$IOS_SCHEME" + - DESTINATION="OS=12.0,name=iPhone 8" SDK="$IOS_SDK" SCHEME="$IOS_SCHEME" script: - xcodebuild clean build test -scheme "$SCHEME" -workspace "$WORKSPACE" SDK="$IOS_SDK" -destination "$DESTINATION" -configuration Debug GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Contents.json b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Contents.json index 72cba767..c8477e67 100644 --- a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,152 +1,158 @@ { + "info" : { + "author" : "xcode", + "version" : 1 + }, "images" : [ { - "idiom" : "iphone", - "size" : "20x20", + "filename" : "Icon-40.png", + "size" : "40x40", + "idiom" : "ipad", + "scale" : "1x" + }, + { + "filename" : "Icon-40@2x.png", + "size" : "40x40", + "idiom" : "ipad", "scale" : "2x" }, { + "filename" : "Icon-60@2x.png", + "size" : "60x60", "idiom" : "iphone", - "size" : "20x20", - "scale" : "3x" + "scale" : "2x" }, { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "icon-29.png", + "filename" : "Icon-72.png", + "size" : "72x72", + "idiom" : "ipad", "scale" : "1x" }, { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "icon-29@2x.png", + "filename" : "Icon-72@2x.png", + "size" : "72x72", + "idiom" : "ipad", "scale" : "2x" }, { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "icon-29@3x.png", - "scale" : "3x" + "filename" : "Icon-76.png", + "size" : "76x76", + "idiom" : "ipad", + "scale" : "1x" }, { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "icon-40@2x.png", + "filename" : "Icon-76@2x.png", + "size" : "76x76", + "idiom" : "ipad", "scale" : "2x" }, { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "icon-40@3x.png", - "scale" : "3x" - }, - { - "size" : "57x57", - "idiom" : "iphone", - "filename" : "icon-57.png", + "filename" : "Icon-Small-50.png", + "size" : "50x50", + "idiom" : "ipad", "scale" : "1x" }, { - "size" : "57x57", - "idiom" : "iphone", - "filename" : "icon-57@2x.png", + "filename" : "Icon-Small-50@2x.png", + "size" : "50x50", + "idiom" : "ipad", "scale" : "2x" }, { - "size" : "60x60", + "filename" : "Icon-Small.png", + "size" : "29x29", "idiom" : "iphone", - "filename" : "icon-60@2x.png", - "scale" : "2x" + "scale" : "1x" }, { - "size" : "60x60", + "filename" : "Icon-Small@2x.png", + "size" : "29x29", "idiom" : "iphone", - "filename" : "icon-60@3x.png", - "scale" : "3x" + "scale" : "2x" }, { - "idiom" : "ipad", - "size" : "20x20", + "filename" : "Icon.png", + "size" : "57x57", + "idiom" : "iphone", "scale" : "1x" }, { - "idiom" : "ipad", - "size" : "20x20", + "filename" : "Icon@2x.png", + "size" : "57x57", + "idiom" : "iphone", "scale" : "2x" }, { + "filename" : "Icon-Small@3x.png", "size" : "29x29", - "idiom" : "ipad", - "filename" : "icon-29~ipad.png", - "scale" : "1x" + "idiom" : "iphone", + "scale" : "3x" }, { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "icon-29@2x~ipad.png", - "scale" : "2x" + "filename" : "Icon-40@3x.png", + "size" : "40x40", + "idiom" : "iphone", + "scale" : "3x" }, { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "icon-40~ipad.png", - "scale" : "1x" + "filename" : "Icon-60@3x.png", + "size" : "60x60", + "idiom" : "iphone", + "scale" : "3x" }, { + "filename" : "Icon-40@2x.png", "size" : "40x40", - "idiom" : "ipad", - "filename" : "icon-40@2x~ipad.png", + "idiom" : "iphone", "scale" : "2x" }, { - "size" : "50x50", + "filename" : "Icon-Small.png", + "size" : "29x29", "idiom" : "ipad", - "filename" : "icon-50~ipad.png", "scale" : "1x" }, { - "size" : "50x50", + "filename" : "Icon-Small@2x.png", + "size" : "29x29", "idiom" : "ipad", - "filename" : "icon-50@2x~ipad.png", "scale" : "2x" }, { - "size" : "72x72", + "filename" : "Icon-83.5@2x.png", + "size" : "83.5x83.5", "idiom" : "ipad", - "filename" : "icon-72~ipad.png", - "scale" : "1x" + "scale" : "2x" }, { - "size" : "72x72", - "idiom" : "ipad", - "filename" : "icon-72@2x~ipad.png", + "filename" : "NotificationIcon@2x.png", + "size" : "20x20", + "idiom" : "iphone", "scale" : "2x" }, { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "icon-76~ipad.png", - "scale" : "1x" + "filename" : "NotificationIcon@3x.png", + "size" : "20x20", + "idiom" : "iphone", + "scale" : "3x" }, { - "size" : "76x76", + "filename" : "NotificationIcon~ipad.png", + "size" : "20x20", "idiom" : "ipad", - "filename" : "icon-76@2x~ipad.png", - "scale" : "2x" + "scale" : "1x" }, { + "filename" : "NotificationIcon~ipad@2x.png", + "size" : "20x20", "idiom" : "ipad", - "size" : "83.5x83.5", "scale" : "2x" }, { - "idiom" : "ios-marketing", + "filename" : "ios-marketing.png", "size" : "1024x1024", + "idiom" : "ios-marketing", "scale" : "1x" } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } + ] } \ No newline at end of file diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-40.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-40.png new file mode 100644 index 00000000..e0e7ab4a Binary files /dev/null and b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-40.png differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-72.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-72.png new file mode 100644 index 00000000..0e609ffd Binary files /dev/null and b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-72.png differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-72@2x.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-72@2x.png new file mode 100644 index 00000000..3506c250 Binary files /dev/null and b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-72@2x.png differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-76.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-76.png new file mode 100644 index 00000000..7162af07 Binary files /dev/null and b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-76.png differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png new file mode 100644 index 00000000..645070c3 Binary files /dev/null and b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png new file mode 100644 index 00000000..e330f732 Binary files /dev/null and b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-Small-50.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-Small-50.png new file mode 100644 index 00000000..cbfc7f2e Binary files /dev/null and b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-Small-50.png differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png new file mode 100644 index 00000000..1dc3b918 Binary files /dev/null and b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-Small.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-Small.png new file mode 100644 index 00000000..fd99b708 Binary files /dev/null and b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-Small.png differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png new file mode 100644 index 00000000..f4138720 Binary files /dev/null and b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png new file mode 100644 index 00000000..36216646 Binary files /dev/null and b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon.png new file mode 100644 index 00000000..ca4edb53 Binary files /dev/null and b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon.png differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon@2x.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon@2x.png new file mode 100644 index 00000000..209709b8 Binary files /dev/null and b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/Icon@2x.png differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/NotificationIcon@2x.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/NotificationIcon@2x.png new file mode 100644 index 00000000..e0e7ab4a Binary files /dev/null and b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/NotificationIcon@2x.png differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/NotificationIcon@3x.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/NotificationIcon@3x.png new file mode 100644 index 00000000..6a18d3c4 Binary files /dev/null and b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/NotificationIcon@3x.png differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/NotificationIcon~ipad.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/NotificationIcon~ipad.png new file mode 100644 index 00000000..ef7b7ae1 Binary files /dev/null and b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/NotificationIcon~ipad.png differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/NotificationIcon~ipad@2x.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/NotificationIcon~ipad@2x.png new file mode 100644 index 00000000..e0e7ab4a Binary files /dev/null and b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/NotificationIcon~ipad@2x.png differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-29.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-29.png deleted file mode 100644 index be8f8880..00000000 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-29.png and /dev/null differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png deleted file mode 100644 index 2a6a9fc3..00000000 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-29@2x~ipad.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-29@2x~ipad.png deleted file mode 100644 index 2a6a9fc3..00000000 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-29@2x~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png deleted file mode 100644 index 932c8f6e..00000000 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-29~ipad.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-29~ipad.png deleted file mode 100644 index be8f8880..00000000 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-29~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png index 46e92b4c..f1de27f5 100644 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png and b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-40@2x~ipad.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-40@2x~ipad.png deleted file mode 100644 index 46e92b4c..00000000 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-40@2x~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png index 2ef8aa02..b59e0c8d 100644 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png and b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-40~ipad.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-40~ipad.png deleted file mode 100644 index c95b6fac..00000000 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-40~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-50@2x~ipad.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-50@2x~ipad.png deleted file mode 100644 index 98ba9bd2..00000000 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-50@2x~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-50~ipad.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-50~ipad.png deleted file mode 100644 index cc7f03c8..00000000 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-50~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-57.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-57.png deleted file mode 100644 index 59c0f7f1..00000000 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-57.png and /dev/null differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png deleted file mode 100644 index 8de9b051..00000000 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png index a3cb7204..b59e0c8d 100644 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png and b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png index 22b0d7f6..1a5e0762 100644 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png and b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-72@2x~ipad.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-72@2x~ipad.png deleted file mode 100644 index b8bfeee0..00000000 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-72@2x~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-72~ipad.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-72~ipad.png deleted file mode 100644 index 373b7cdc..00000000 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-72~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-76@2x~ipad.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-76@2x~ipad.png deleted file mode 100644 index 6efeacbf..00000000 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-76@2x~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-76~ipad.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-76~ipad.png deleted file mode 100644 index a68be4d3..00000000 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/icon-76~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/ios-marketing.png b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/ios-marketing.png new file mode 100644 index 00000000..ce1519ca Binary files /dev/null and b/DZNEmptyDataSet/Applications/Assets.xcassets/AppIcon.appiconset/ios-marketing.png differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage-2.launchimage/Contents.json b/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage-2.launchimage/Contents.json deleted file mode 100644 index 5a296668..00000000 --- a/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage-2.launchimage/Contents.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "images" : [ - { - "orientation" : "portrait", - "idiom" : "ipad", - "minimum-system-version" : "7.0", - "extent" : "full-screen", - "scale" : "2x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "minimum-system-version" : "7.0", - "extent" : "full-screen", - "scale" : "1x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "minimum-system-version" : "7.0", - "extent" : "full-screen", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "minimum-system-version" : "7.0", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "minimum-system-version" : "7.0", - "subtype" : "retina4", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "minimum-system-version" : "7.0", - "extent" : "full-screen", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage-3.launchimage/Contents.json b/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage-3.launchimage/Contents.json deleted file mode 100644 index 5a296668..00000000 --- a/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage-3.launchimage/Contents.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "images" : [ - { - "orientation" : "portrait", - "idiom" : "ipad", - "minimum-system-version" : "7.0", - "extent" : "full-screen", - "scale" : "2x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "minimum-system-version" : "7.0", - "extent" : "full-screen", - "scale" : "1x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "minimum-system-version" : "7.0", - "extent" : "full-screen", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "minimum-system-version" : "7.0", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "minimum-system-version" : "7.0", - "subtype" : "retina4", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "minimum-system-version" : "7.0", - "extent" : "full-screen", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage.launchimage/Contents.json b/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage.launchimage/Contents.json deleted file mode 100644 index 0b4f0e13..00000000 --- a/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage.launchimage/Contents.json +++ /dev/null @@ -1,149 +0,0 @@ -{ - "images" : [ - { - "extent" : "full-screen", - "idiom" : "iphone", - "subtype" : "736h", - "filename" : "Default-hd-plus@2x.png", - "minimum-system-version" : "8.0", - "orientation" : "portrait", - "scale" : "3x" - }, - { - "orientation" : "landscape", - "idiom" : "iphone", - "extent" : "full-screen", - "minimum-system-version" : "8.0", - "subtype" : "736h", - "scale" : "3x" - }, - { - "extent" : "full-screen", - "idiom" : "iphone", - "subtype" : "667h", - "filename" : "Default-hd@2x.png", - "minimum-system-version" : "8.0", - "orientation" : "portrait", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "filename" : "Default@2x.png", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "2x" - }, - { - "extent" : "full-screen", - "idiom" : "iphone", - "subtype" : "retina4", - "filename" : "Default-568h@2x.png", - "minimum-system-version" : "7.0", - "orientation" : "portrait", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "1x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "2x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "filename" : "Default.png", - "extent" : "full-screen", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "filename" : "Default@2x-1.png", - "extent" : "full-screen", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "filename" : "Default-568h@2x-1.png", - "extent" : "full-screen", - "subtype" : "retina4", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "to-status-bar", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "full-screen", - "scale" : "1x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "to-status-bar", - "scale" : "1x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "full-screen", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "to-status-bar", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "full-screen", - "scale" : "2x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "to-status-bar", - "scale" : "2x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "full-screen", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x-1.png b/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x-1.png deleted file mode 100644 index 5cb6dd23..00000000 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x-1.png and /dev/null differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png b/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png deleted file mode 100644 index 5cb6dd23..00000000 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage.launchimage/Default-hd-plus@2x.png b/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage.launchimage/Default-hd-plus@2x.png deleted file mode 100644 index 93c8e1f1..00000000 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage.launchimage/Default-hd-plus@2x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage.launchimage/Default-hd@2x.png b/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage.launchimage/Default-hd@2x.png deleted file mode 100644 index 90df4f41..00000000 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage.launchimage/Default-hd@2x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage.launchimage/Default.png b/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage.launchimage/Default.png deleted file mode 100644 index 71a23a9e..00000000 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage.launchimage/Default.png and /dev/null differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage.launchimage/Default@2x-1.png b/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage.launchimage/Default@2x-1.png deleted file mode 100644 index 8fff31fe..00000000 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage.launchimage/Default@2x-1.png and /dev/null differ diff --git a/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage.launchimage/Default@2x.png b/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage.launchimage/Default@2x.png deleted file mode 100644 index 8fff31fe..00000000 Binary files a/DZNEmptyDataSet/Applications/Assets.xcassets/LaunchImage.launchimage/Default@2x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Applications/Base.lproj/LaunchScreen.storyboard b/DZNEmptyDataSet/Applications/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..5483266c --- /dev/null +++ b/DZNEmptyDataSet/Applications/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DZNEmptyDataSet/Applications/Supporting Files/Storyboard.storyboard b/DZNEmptyDataSet/Applications/Base.lproj/Storyboard.storyboard similarity index 76% rename from DZNEmptyDataSet/Applications/Supporting Files/Storyboard.storyboard rename to DZNEmptyDataSet/Applications/Base.lproj/Storyboard.storyboard index e1d0c79f..8910c013 100644 --- a/DZNEmptyDataSet/Applications/Supporting Files/Storyboard.storyboard +++ b/DZNEmptyDataSet/Applications/Base.lproj/Storyboard.storyboard @@ -1,15 +1,15 @@ - + - + - + @@ -17,32 +17,23 @@ - - - - - - - - - - + - + - @@ -81,7 +71,7 @@ - + @@ -94,9 +84,4 @@ - - - - - diff --git a/DZNEmptyDataSet/Applications/Application.h b/DZNEmptyDataSet/Applications/DataSource/Application.h similarity index 100% rename from DZNEmptyDataSet/Applications/Application.h rename to DZNEmptyDataSet/Applications/DataSource/Application.h diff --git a/DZNEmptyDataSet/Applications/Application.m b/DZNEmptyDataSet/Applications/DataSource/Application.m similarity index 100% rename from DZNEmptyDataSet/Applications/Application.m rename to DZNEmptyDataSet/Applications/DataSource/Application.m diff --git a/DZNEmptyDataSet/Applications/applications.json b/DZNEmptyDataSet/Applications/DataSource/applications.json similarity index 100% rename from DZNEmptyDataSet/Applications/applications.json rename to DZNEmptyDataSet/Applications/DataSource/applications.json diff --git a/DZNEmptyDataSet/Applications/DetailViewController.m b/DZNEmptyDataSet/Applications/DetailViewController.m index 89687d86..f0b01cfe 100644 --- a/DZNEmptyDataSet/Applications/DetailViewController.m +++ b/DZNEmptyDataSet/Applications/DetailViewController.m @@ -28,30 +28,24 @@ - (instancetype)initWithApplication:(Application *)application return self; } -#pragma mark - View lifecycle +#pragma mark - Life Cycle - (void)viewDidLoad { [super viewDidLoad]; - self.edgesForExtendedLayout = UIRectEdgeNone; - self.tableView.emptyDataSetSource = self; self.tableView.emptyDataSetDelegate = self; - [self configureHeaderAndFooter]; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - [self configureNavigationBar]; - [self setNeedsStatusBarAppearanceUpdate]; } - #pragma mark - Configuration and Event Methods - (void)configureNavigationBar diff --git a/DZNEmptyDataSet/Applications/Supporting Files/Info.plist b/DZNEmptyDataSet/Applications/Info.plist similarity index 95% rename from DZNEmptyDataSet/Applications/Supporting Files/Info.plist rename to DZNEmptyDataSet/Applications/Info.plist index 7b0138cd..f5da0f8a 100644 --- a/DZNEmptyDataSet/Applications/Supporting Files/Info.plist +++ b/DZNEmptyDataSet/Applications/Info.plist @@ -38,6 +38,7 @@ UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight + UIInterfaceOrientationPortraitUpsideDown UIViewControllerBasedStatusBarAppearance diff --git a/DZNEmptyDataSet/Applications/MainViewController.m b/DZNEmptyDataSet/Applications/MainViewController.m index d2438500..cc8d4278 100644 --- a/DZNEmptyDataSet/Applications/MainViewController.m +++ b/DZNEmptyDataSet/Applications/MainViewController.m @@ -11,7 +11,7 @@ #import -@interface MainViewController () +@interface MainViewController () @property (nonatomic, strong) NSArray *applications; @property (nonatomic, strong) UISearchController *searchController; @end @@ -21,35 +21,44 @@ @implementation MainViewController - (void)awakeFromNib { [super awakeFromNib]; - NSString *path = [[NSBundle mainBundle] pathForResource:@"applications" ofType:@"json"]; self.applications = [Application applicationsFromJSONAtPath:path]; } -#pragma mark - View lifecycle +#pragma mark - Life Cycle - (void)viewDidLoad { - [super viewDidLoad]; - self.title = @"Applications"; self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:NULL]; + self.tableView.emptyDataSetSource = self; + self.tableView.emptyDataSetDelegate = self; self.tableView.tableFooterView = [UIView new]; - self.searchDisplayController.searchResultsTableView.emptyDataSetSource = self; - self.searchDisplayController.searchResultsTableView.emptyDataSetDelegate = self; - self.searchDisplayController.searchResultsTableView.tableFooterView = [UIView new]; - [self.searchDisplayController setValue:@"" forKey:@"noResultsMessage"]; + self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil]; + self.searchController.searchResultsUpdater = self; + self.searchController.delegate = self; + self.searchController.dimsBackgroundDuringPresentation = NO; + self.searchController.searchBar.delegate = self; + [self.tableView setTableHeaderView:self.searchController.searchBar]; + self.definesPresentationContext = YES; + + [super viewDidLoad]; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - - // Resets styling - self.navigationController.navigationBar.titleTextAttributes = nil; - self.navigationController.navigationBar.barTintColor = [UIColor colorWithHex:@"f8f8f8"];; + [self resetStyling]; +} + +- (void)resetStyling { + // Reset styling + UIColor *tintColor = [UIColor blackColor]; + self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: tintColor}; + self.navigationController.navigationBar.barTintColor = [UIColor colorWithHex:@"f8f8f8"]; + self.navigationController.navigationBar.tintColor = tintColor; self.navigationController.navigationBar.translucent = NO; self.navigationController.navigationBar.barStyle = UIBarStyleDefault; } @@ -59,12 +68,12 @@ - (void)viewWillAppear:(BOOL)animated - (NSArray *)filteredApps { - UISearchBar *searchBar = self.searchDisplayController.searchBar; + UISearchBar *searchBar = self.searchController.searchBar; if ([searchBar isFirstResponder] && searchBar.text.length > 0) { - NSPredicate *precidate = [NSPredicate predicateWithFormat:@"displayName CONTAINS[cd] %@", searchBar.text]; - return [self.applications filteredArrayUsingPredicate:precidate]; + NSPredicate *predicate = [NSPredicate predicateWithFormat:@"displayName CONTAINS[cd] %@", searchBar.text]; + return [self.applications filteredArrayUsingPredicate:predicate]; } return self.applications; } @@ -80,7 +89,7 @@ - (NSAttributedString *)titleForEmptyDataSet:(UIScrollView *)scrollView - (NSAttributedString *)descriptionForEmptyDataSet:(UIScrollView *)scrollView { - UISearchBar *searchBar = self.searchDisplayController.searchBar; + UISearchBar *searchBar = self.searchController.searchBar; NSString *text = [NSString stringWithFormat:@"There are no empty dataset examples for \"%@\".", searchBar.text]; NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:text attributes:nil]; @@ -138,7 +147,7 @@ - (void)emptyDataSet:(UIScrollView *)scrollView didTapView:(UIView *)view - (void)emptyDataSet:(UIScrollView *)scrollView didTapButton:(UIButton *)button { - UISearchBar *searchBar = self.searchDisplayController.searchBar; + UISearchBar *searchBar = self.searchController.searchBar; NSURL *URL = [NSURL URLWithString:[NSString stringWithFormat:@"http://itunes.com/apps/%@", searchBar.text]]; @@ -238,6 +247,7 @@ - (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar - (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar { // Do something + [self resetStyling]; } - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar @@ -247,48 +257,56 @@ - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { - // Do something + [self updateSearchResultsForSearchController:self.searchController]; } +- (void)searchBar:(UISearchBar *)searchBar selectedScopeButtonIndexDidChange:(NSInteger)selectedScope +{ + [self updateSearchResultsForSearchController:self.searchController]; +} -#pragma mark - UISearchDisplayDelegate Methods - -- (void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller +- (void)searchForText:(NSString *)searchString { - // Do something + //NSLog(@"searchString == %@",searchString); } -- (void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller + +#pragma mark - UISearchResultsUpdating Methods + +- (void)updateSearchResultsForSearchController:(UISearchController *)searchController { - // Do something + NSString *searchString = _searchController.searchBar.text; + [self searchForText:searchString]; + [self.tableView reloadData]; } -- (void)searchDisplayController:(UISearchDisplayController *)controller didShowSearchResultsTableView:(UITableView *)tableView + +#pragma mark - UISearchControllerDelegate Methods + +- (void)didDismissSearchController:(UISearchController *)searchController { // Do something } -- (void)searchDisplayController:(UISearchDisplayController *)controller didLoadSearchResultsTableView:(UITableView *)tableView +- (void)didPresentSearchController:(UISearchController *)searchController { // Do something } - -#pragma mark - View Auto-Rotation - -- (UIStatusBarStyle)preferredStatusBarStyle +- (void)presentSearchController:(UISearchController *)searchController { - return UIStatusBarStyleDefault; + // Do something } -- (UIInterfaceOrientationMask)supportedInterfaceOrientations +- (void)willDismissSearchController:(UISearchController *)searchController { - return UIInterfaceOrientationMaskAll; + // Do something } -- (BOOL)shouldAutorotate +- (void)willPresentSearchController:(UISearchController *)searchController { - return YES; + // Do something } + @end diff --git a/DZNEmptyDataSet/Applications/NoApplication.png b/DZNEmptyDataSet/Applications/NoApplication.png new file mode 100644 index 00000000..96334a7c Binary files /dev/null and b/DZNEmptyDataSet/Applications/NoApplication.png differ diff --git a/DZNEmptyDataSet/Applications/Supporting Files/Applications-Prefix.pch b/DZNEmptyDataSet/Applications/Supporting Files/Applications-Prefix.pch deleted file mode 100644 index 82a2bb45..00000000 --- a/DZNEmptyDataSet/Applications/Supporting Files/Applications-Prefix.pch +++ /dev/null @@ -1,16 +0,0 @@ -// -// Prefix header -// -// The contents of this file are implicitly included at the beginning of every source file. -// - -#import - -#ifndef __IPHONE_5_0 -#warning "This project uses features only available in iOS SDK 5.0 and later." -#endif - -#ifdef __OBJC__ - #import - #import -#endif diff --git a/DZNEmptyDataSet/Applications/Supporting Files/Base.lproj/LaunchScreen.storyboard b/DZNEmptyDataSet/Applications/Supporting Files/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index fdf3f97d..00000000 --- a/DZNEmptyDataSet/Applications/Supporting Files/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DZNEmptyDataSet/Applications/Supporting Files/en.lproj/InfoPlist.strings b/DZNEmptyDataSet/Applications/Supporting Files/en.lproj/InfoPlist.strings deleted file mode 100644 index 477b28ff..00000000 --- a/DZNEmptyDataSet/Applications/Supporting Files/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - diff --git a/DZNEmptyDataSet/Applications/Supporting Files/main.m b/DZNEmptyDataSet/Applications/main.m similarity index 100% rename from DZNEmptyDataSet/Applications/Supporting Files/main.m rename to DZNEmptyDataSet/Applications/main.m diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Contents.json b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Contents.json index 3e857877..c8477e67 100644 --- a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,128 +1,158 @@ { + "info" : { + "author" : "xcode", + "version" : 1 + }, "images" : [ { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "icon-29.png", + "filename" : "Icon-40.png", + "size" : "40x40", + "idiom" : "ipad", "scale" : "1x" }, { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "icon-29@2x.png", + "filename" : "Icon-40@2x.png", + "size" : "40x40", + "idiom" : "ipad", "scale" : "2x" }, { - "size" : "29x29", + "filename" : "Icon-60@2x.png", + "size" : "60x60", "idiom" : "iphone", - "filename" : "icon-29@3x.png", - "scale" : "3x" + "scale" : "2x" }, { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "icon-40@2x.png", - "scale" : "2x" + "filename" : "Icon-72.png", + "size" : "72x72", + "idiom" : "ipad", + "scale" : "1x" }, { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "icon-40@3x.png", - "scale" : "3x" + "filename" : "Icon-72@2x.png", + "size" : "72x72", + "idiom" : "ipad", + "scale" : "2x" }, { - "size" : "57x57", - "idiom" : "iphone", - "filename" : "icon-57.png", + "filename" : "Icon-76.png", + "size" : "76x76", + "idiom" : "ipad", "scale" : "1x" }, { - "size" : "57x57", - "idiom" : "iphone", - "filename" : "icon-57@2x.png", + "filename" : "Icon-76@2x.png", + "size" : "76x76", + "idiom" : "ipad", "scale" : "2x" }, { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "icon-60@2x.png", + "filename" : "Icon-Small-50.png", + "size" : "50x50", + "idiom" : "ipad", + "scale" : "1x" + }, + { + "filename" : "Icon-Small-50@2x.png", + "size" : "50x50", + "idiom" : "ipad", "scale" : "2x" }, { - "size" : "60x60", + "filename" : "Icon-Small.png", + "size" : "29x29", "idiom" : "iphone", - "filename" : "icon-60@3x.png", - "scale" : "3x" + "scale" : "1x" }, { + "filename" : "Icon-Small@2x.png", "size" : "29x29", - "idiom" : "ipad", - "filename" : "icon-29~ipad.png", + "idiom" : "iphone", + "scale" : "2x" + }, + { + "filename" : "Icon.png", + "size" : "57x57", + "idiom" : "iphone", "scale" : "1x" }, { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "icon-29@2x~ipad.png", + "filename" : "Icon@2x.png", + "size" : "57x57", + "idiom" : "iphone", "scale" : "2x" }, { + "filename" : "Icon-Small@3x.png", + "size" : "29x29", + "idiom" : "iphone", + "scale" : "3x" + }, + { + "filename" : "Icon-40@3x.png", "size" : "40x40", - "idiom" : "ipad", - "filename" : "icon-40~ipad.png", - "scale" : "1x" + "idiom" : "iphone", + "scale" : "3x" }, { + "filename" : "Icon-60@3x.png", + "size" : "60x60", + "idiom" : "iphone", + "scale" : "3x" + }, + { + "filename" : "Icon-40@2x.png", "size" : "40x40", - "idiom" : "ipad", - "filename" : "icon-40@2x~ipad.png", + "idiom" : "iphone", "scale" : "2x" }, { - "size" : "50x50", + "filename" : "Icon-Small.png", + "size" : "29x29", "idiom" : "ipad", - "filename" : "icon-50~ipad.png", "scale" : "1x" }, { - "size" : "50x50", + "filename" : "Icon-Small@2x.png", + "size" : "29x29", "idiom" : "ipad", - "filename" : "icon-50@2x~ipad.png", "scale" : "2x" }, { - "size" : "72x72", + "filename" : "Icon-83.5@2x.png", + "size" : "83.5x83.5", "idiom" : "ipad", - "filename" : "icon-72~ipad.png", - "scale" : "1x" + "scale" : "2x" }, { - "size" : "72x72", - "idiom" : "ipad", - "filename" : "icon-72@2x~ipad.png", + "filename" : "NotificationIcon@2x.png", + "size" : "20x20", + "idiom" : "iphone", "scale" : "2x" }, { - "size" : "76x76", + "filename" : "NotificationIcon@3x.png", + "size" : "20x20", + "idiom" : "iphone", + "scale" : "3x" + }, + { + "filename" : "NotificationIcon~ipad.png", + "size" : "20x20", "idiom" : "ipad", - "filename" : "icon-76~ipad.png", "scale" : "1x" }, { - "size" : "76x76", + "filename" : "NotificationIcon~ipad@2x.png", + "size" : "20x20", "idiom" : "ipad", - "filename" : "icon-76@2x~ipad.png", "scale" : "2x" }, { - "size" : "83.5x83.5", - "idiom" : "ipad", - "filename" : "icon-120~car.png", - "scale" : "2x" + "filename" : "ios-marketing.png", + "size" : "1024x1024", + "idiom" : "ios-marketing", + "scale" : "1x" } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } + ] } \ No newline at end of file diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-40.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-40.png new file mode 100644 index 00000000..ec63fd29 Binary files /dev/null and b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-40.png differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-72.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-72.png new file mode 100644 index 00000000..2ddde7c4 Binary files /dev/null and b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-72.png differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-72@2x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-72@2x.png new file mode 100644 index 00000000..c66c7806 Binary files /dev/null and b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-72@2x.png differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-76.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-76.png new file mode 100644 index 00000000..f36ad8cc Binary files /dev/null and b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-76.png differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png new file mode 100644 index 00000000..8442b732 Binary files /dev/null and b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png new file mode 100644 index 00000000..1e253bb6 Binary files /dev/null and b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-Small-50.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-Small-50.png new file mode 100644 index 00000000..19daf51f Binary files /dev/null and b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-Small-50.png differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png new file mode 100644 index 00000000..a23be245 Binary files /dev/null and b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-Small.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-Small.png new file mode 100644 index 00000000..54cbbc4e Binary files /dev/null and b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-Small.png differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png new file mode 100644 index 00000000..310b7a9d Binary files /dev/null and b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png new file mode 100644 index 00000000..ee9c245e Binary files /dev/null and b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon.png new file mode 100644 index 00000000..eec70ae1 Binary files /dev/null and b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon.png differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon@2x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon@2x.png new file mode 100644 index 00000000..049eea31 Binary files /dev/null and b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/Icon@2x.png differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/NotificationIcon@2x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/NotificationIcon@2x.png new file mode 100644 index 00000000..ec63fd29 Binary files /dev/null and b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/NotificationIcon@2x.png differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/NotificationIcon@3x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/NotificationIcon@3x.png new file mode 100644 index 00000000..ae2eff22 Binary files /dev/null and b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/NotificationIcon@3x.png differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/NotificationIcon~ipad.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/NotificationIcon~ipad.png new file mode 100644 index 00000000..bfcaea2a Binary files /dev/null and b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/NotificationIcon~ipad.png differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/NotificationIcon~ipad@2x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/NotificationIcon~ipad@2x.png new file mode 100644 index 00000000..ec63fd29 Binary files /dev/null and b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/NotificationIcon~ipad@2x.png differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-120~car.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-120~car.png deleted file mode 100644 index a88f27bf..00000000 Binary files a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-120~car.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-29.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-29.png deleted file mode 100644 index 2b9da15c..00000000 Binary files a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-29.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png deleted file mode 100644 index 512acd5a..00000000 Binary files a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-29@2x~ipad.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-29@2x~ipad.png deleted file mode 100644 index 512acd5a..00000000 Binary files a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-29@2x~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png deleted file mode 100644 index 61e8e38a..00000000 Binary files a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-29~ipad.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-29~ipad.png deleted file mode 100644 index 2b9da15c..00000000 Binary files a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-29~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png index f4f015c5..988706da 100644 Binary files a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png and b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-40@2x~ipad.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-40@2x~ipad.png deleted file mode 100644 index f4f015c5..00000000 Binary files a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-40@2x~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png index e0189f0c..4751527a 100644 Binary files a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png and b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-40~ipad.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-40~ipad.png deleted file mode 100644 index c70364b1..00000000 Binary files a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-40~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-50@2x~ipad.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-50@2x~ipad.png deleted file mode 100644 index ed3c8710..00000000 Binary files a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-50@2x~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-50~ipad.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-50~ipad.png deleted file mode 100644 index 2f9c5bbe..00000000 Binary files a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-50~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-57.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-57.png deleted file mode 100644 index 31ec0b30..00000000 Binary files a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-57.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png deleted file mode 100644 index 1523278c..00000000 Binary files a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-57@2x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png index a88f27bf..4751527a 100644 Binary files a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png and b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png index 840dac84..92d936cc 100644 Binary files a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png and b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-72@2x~ipad.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-72@2x~ipad.png deleted file mode 100644 index 041a6788..00000000 Binary files a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-72@2x~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-72~ipad.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-72~ipad.png deleted file mode 100644 index cc742f3c..00000000 Binary files a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-72~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-76@2x~ipad.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-76@2x~ipad.png deleted file mode 100644 index a46f09b6..00000000 Binary files a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-76@2x~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-76~ipad.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-76~ipad.png deleted file mode 100644 index 53490c78..00000000 Binary files a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/icon-76~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/ios-marketing.png b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/ios-marketing.png new file mode 100644 index 00000000..f6e52761 Binary files /dev/null and b/DZNEmptyDataSet/Colors/Assets.xcassets/AppIcon.appiconset/ios-marketing.png differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/Contents.json b/DZNEmptyDataSet/Colors/Assets.xcassets/Contents.json new file mode 100644 index 00000000..da4a164c --- /dev/null +++ b/DZNEmptyDataSet/Colors/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/LaunchImage.launchimage/Contents.json b/DZNEmptyDataSet/Colors/Assets.xcassets/LaunchImage.launchimage/Contents.json deleted file mode 100644 index acf54f94..00000000 --- a/DZNEmptyDataSet/Colors/Assets.xcassets/LaunchImage.launchimage/Contents.json +++ /dev/null @@ -1,146 +0,0 @@ -{ - "images" : [ - { - "extent" : "full-screen", - "idiom" : "iphone", - "subtype" : "736h", - "filename" : "Default-hd-plus@2x.png", - "minimum-system-version" : "8.0", - "orientation" : "portrait", - "scale" : "3x" - }, - { - "orientation" : "landscape", - "idiom" : "iphone", - "extent" : "full-screen", - "minimum-system-version" : "8.0", - "subtype" : "736h", - "scale" : "3x" - }, - { - "extent" : "full-screen", - "idiom" : "iphone", - "subtype" : "667h", - "filename" : "Default-hd@2x.png", - "minimum-system-version" : "8.0", - "orientation" : "portrait", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "filename" : "Default@2x.png", - "scale" : "2x" - }, - { - "extent" : "full-screen", - "idiom" : "iphone", - "subtype" : "retina4", - "filename" : "Default-568h@2x.png", - "minimum-system-version" : "7.0", - "orientation" : "portrait", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "1x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "2x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "subtype" : "retina4", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "to-status-bar", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "full-screen", - "scale" : "1x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "to-status-bar", - "scale" : "1x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "full-screen", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "to-status-bar", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "full-screen", - "scale" : "2x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "to-status-bar", - "scale" : "2x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "full-screen", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png deleted file mode 100644 index 449199ff..00000000 Binary files a/DZNEmptyDataSet/Colors/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/LaunchImage.launchimage/Default-hd-plus@2x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/LaunchImage.launchimage/Default-hd-plus@2x.png deleted file mode 100644 index a99cdf33..00000000 Binary files a/DZNEmptyDataSet/Colors/Assets.xcassets/LaunchImage.launchimage/Default-hd-plus@2x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/LaunchImage.launchimage/Default-hd@2x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/LaunchImage.launchimage/Default-hd@2x.png deleted file mode 100644 index b7c97e49..00000000 Binary files a/DZNEmptyDataSet/Colors/Assets.xcassets/LaunchImage.launchimage/Default-hd@2x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Assets.xcassets/LaunchImage.launchimage/Default@2x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/LaunchImage.launchimage/Default@2x.png deleted file mode 100644 index 6ce251c9..00000000 Binary files a/DZNEmptyDataSet/Colors/Assets.xcassets/LaunchImage.launchimage/Default@2x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Images.xcassets/empty_placeholder.imageset/Contents.json b/DZNEmptyDataSet/Colors/Assets.xcassets/empty_placeholder.imageset/Contents.json similarity index 100% rename from DZNEmptyDataSet/Colors/Images.xcassets/empty_placeholder.imageset/Contents.json rename to DZNEmptyDataSet/Colors/Assets.xcassets/empty_placeholder.imageset/Contents.json diff --git a/DZNEmptyDataSet/Colors/Images.xcassets/empty_placeholder.imageset/empty_placeholder.png b/DZNEmptyDataSet/Colors/Assets.xcassets/empty_placeholder.imageset/empty_placeholder.png similarity index 100% rename from DZNEmptyDataSet/Colors/Images.xcassets/empty_placeholder.imageset/empty_placeholder.png rename to DZNEmptyDataSet/Colors/Assets.xcassets/empty_placeholder.imageset/empty_placeholder.png diff --git a/DZNEmptyDataSet/Colors/Images.xcassets/empty_placeholder.imageset/empty_placeholder@2x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/empty_placeholder.imageset/empty_placeholder@2x.png similarity index 100% rename from DZNEmptyDataSet/Colors/Images.xcassets/empty_placeholder.imageset/empty_placeholder@2x.png rename to DZNEmptyDataSet/Colors/Assets.xcassets/empty_placeholder.imageset/empty_placeholder@2x.png diff --git a/DZNEmptyDataSet/Colors/Images.xcassets/search_icon.imageset/Contents.json b/DZNEmptyDataSet/Colors/Assets.xcassets/search_icon.imageset/Contents.json similarity index 100% rename from DZNEmptyDataSet/Colors/Images.xcassets/search_icon.imageset/Contents.json rename to DZNEmptyDataSet/Colors/Assets.xcassets/search_icon.imageset/Contents.json diff --git a/DZNEmptyDataSet/Colors/Images.xcassets/search_icon.imageset/search_icon.png b/DZNEmptyDataSet/Colors/Assets.xcassets/search_icon.imageset/search_icon.png similarity index 100% rename from DZNEmptyDataSet/Colors/Images.xcassets/search_icon.imageset/search_icon.png rename to DZNEmptyDataSet/Colors/Assets.xcassets/search_icon.imageset/search_icon.png diff --git a/DZNEmptyDataSet/Colors/Images.xcassets/search_icon.imageset/search_icon@2x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/search_icon.imageset/search_icon@2x.png similarity index 100% rename from DZNEmptyDataSet/Colors/Images.xcassets/search_icon.imageset/search_icon@2x.png rename to DZNEmptyDataSet/Colors/Assets.xcassets/search_icon.imageset/search_icon@2x.png diff --git a/DZNEmptyDataSet/Colors/Images.xcassets/tab_collection.imageset/Contents.json b/DZNEmptyDataSet/Colors/Assets.xcassets/tab_collection.imageset/Contents.json similarity index 100% rename from DZNEmptyDataSet/Colors/Images.xcassets/tab_collection.imageset/Contents.json rename to DZNEmptyDataSet/Colors/Assets.xcassets/tab_collection.imageset/Contents.json diff --git a/DZNEmptyDataSet/Colors/Images.xcassets/tab_collection.imageset/tab_collection.png b/DZNEmptyDataSet/Colors/Assets.xcassets/tab_collection.imageset/tab_collection.png similarity index 100% rename from DZNEmptyDataSet/Colors/Images.xcassets/tab_collection.imageset/tab_collection.png rename to DZNEmptyDataSet/Colors/Assets.xcassets/tab_collection.imageset/tab_collection.png diff --git a/DZNEmptyDataSet/Colors/Images.xcassets/tab_collection.imageset/tab_collection@2x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/tab_collection.imageset/tab_collection@2x.png similarity index 100% rename from DZNEmptyDataSet/Colors/Images.xcassets/tab_collection.imageset/tab_collection@2x.png rename to DZNEmptyDataSet/Colors/Assets.xcassets/tab_collection.imageset/tab_collection@2x.png diff --git a/DZNEmptyDataSet/Colors/Images.xcassets/tab_search.imageset/Contents.json b/DZNEmptyDataSet/Colors/Assets.xcassets/tab_search.imageset/Contents.json similarity index 100% rename from DZNEmptyDataSet/Colors/Images.xcassets/tab_search.imageset/Contents.json rename to DZNEmptyDataSet/Colors/Assets.xcassets/tab_search.imageset/Contents.json diff --git a/DZNEmptyDataSet/Colors/Images.xcassets/tab_search.imageset/tab_search.png b/DZNEmptyDataSet/Colors/Assets.xcassets/tab_search.imageset/tab_search.png similarity index 100% rename from DZNEmptyDataSet/Colors/Images.xcassets/tab_search.imageset/tab_search.png rename to DZNEmptyDataSet/Colors/Assets.xcassets/tab_search.imageset/tab_search.png diff --git a/DZNEmptyDataSet/Colors/Images.xcassets/tab_search.imageset/tab_search@2x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/tab_search.imageset/tab_search@2x.png similarity index 100% rename from DZNEmptyDataSet/Colors/Images.xcassets/tab_search.imageset/tab_search@2x.png rename to DZNEmptyDataSet/Colors/Assets.xcassets/tab_search.imageset/tab_search@2x.png diff --git a/DZNEmptyDataSet/Colors/Images.xcassets/tab_table.imageset/Contents.json b/DZNEmptyDataSet/Colors/Assets.xcassets/tab_table.imageset/Contents.json similarity index 100% rename from DZNEmptyDataSet/Colors/Images.xcassets/tab_table.imageset/Contents.json rename to DZNEmptyDataSet/Colors/Assets.xcassets/tab_table.imageset/Contents.json diff --git a/DZNEmptyDataSet/Colors/Images.xcassets/tab_table.imageset/tab_table.png b/DZNEmptyDataSet/Colors/Assets.xcassets/tab_table.imageset/tab_table.png similarity index 100% rename from DZNEmptyDataSet/Colors/Images.xcassets/tab_table.imageset/tab_table.png rename to DZNEmptyDataSet/Colors/Assets.xcassets/tab_table.imageset/tab_table.png diff --git a/DZNEmptyDataSet/Colors/Images.xcassets/tab_table.imageset/tab_table@2x.png b/DZNEmptyDataSet/Colors/Assets.xcassets/tab_table.imageset/tab_table@2x.png similarity index 100% rename from DZNEmptyDataSet/Colors/Images.xcassets/tab_table.imageset/tab_table@2x.png rename to DZNEmptyDataSet/Colors/Assets.xcassets/tab_table.imageset/tab_table@2x.png diff --git a/DZNEmptyDataSet/Colors/Base.lproj/LaunchScreen.storyboard b/DZNEmptyDataSet/Colors/Base.lproj/LaunchScreen.storyboard index fdf3f97d..df27a909 100644 --- a/DZNEmptyDataSet/Colors/Base.lproj/LaunchScreen.storyboard +++ b/DZNEmptyDataSet/Colors/Base.lproj/LaunchScreen.storyboard @@ -1,7 +1,12 @@ - - + + + + + - + + + @@ -13,10 +18,41 @@ - + + + + + + + + + + + + + + + + + + @@ -24,4 +60,7 @@ + + + diff --git a/DZNEmptyDataSet/Colors/Base.lproj/Storyboard.storyboard b/DZNEmptyDataSet/Colors/Base.lproj/Storyboard.storyboard new file mode 100755 index 00000000..f031b5c4 --- /dev/null +++ b/DZNEmptyDataSet/Colors/Base.lproj/Storyboard.storyboard @@ -0,0 +1,412 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DZNEmptyDataSet/Colors/CollectionViewController.m b/DZNEmptyDataSet/Colors/CollectionViewController.m index fc362a41..eab3a802 100644 --- a/DZNEmptyDataSet/Colors/CollectionViewController.m +++ b/DZNEmptyDataSet/Colors/CollectionViewController.m @@ -7,7 +7,7 @@ // #import "CollectionViewController.h" -#import "SearchViewController.h" +#import "DetailViewController.h" #import "Palette.h" #import "Color.h" @@ -20,20 +20,12 @@ @interface CollectionViewController () @property (nonatomic) NSInteger columnCount; -@property (nonatomic, strong) NSMutableArray *filteredPalette; +@property (nonatomic, strong) NSMutableArray *shuffledColors; @end @implementation CollectionViewController -#pragma mark - View lifecycle - -- (void)awakeFromNib -{ - [super awakeFromNib]; - - self.title = @"Collection"; - self.tabBarItem = [[UITabBarItem alloc] initWithTitle:self.title image:[UIImage imageNamed:@"tab_collection"] tag:self.title.hash]; -} +#pragma mark - Life Cycle - (void)viewDidLoad { @@ -58,11 +50,8 @@ - (void)viewDidLoad - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; -} - -- (void)viewDidAppear:(BOOL)animated -{ - [super viewDidAppear:animated]; + self.shuffledColors = nil; + [self.collectionView reloadData]; } @@ -76,22 +65,22 @@ - (NSInteger)columnCount - (CGSize)cellSize { UICollectionViewFlowLayout *flowLayout = (UICollectionViewFlowLayout *)self.collectionView.collectionViewLayout; - CGFloat size = (self.navigationController.view.bounds.size.width/self.columnCount) - flowLayout.minimumLineSpacing; + CGFloat size = (self.navigationController.view.bounds.size.width/(CGFloat)self.columnCount) - flowLayout.minimumLineSpacing; return CGSizeMake(size, size); } -- (NSMutableArray *)filteredPalette +- (NSMutableArray *)shuffledColors { - // Randomly filtered palette - if (!_filteredPalette) + // Randomly shuffled palette + if (!_shuffledColors) { - _filteredPalette = [[NSMutableArray alloc] initWithArray:[[Palette sharedPalette] colors]]; - - for (NSInteger i = _filteredPalette.count-1; i > 0; i--) { - [_filteredPalette exchangeObjectAtIndex:i withObjectAtIndex:arc4random_uniform(i+1.0)]; + _shuffledColors = [[NSMutableArray alloc] initWithArray:[[Palette sharedPalette] colors]]; + // Fisher–Yates shuffle algorithm + for (NSInteger i = _shuffledColors.count-1; i > 0; i--) { + [_shuffledColors exchangeObjectAtIndex:i withObjectAtIndex:arc4random_uniform((uint32_t)(i+1))]; } } - return _filteredPalette; + return _shuffledColors; } @@ -100,16 +89,14 @@ - (NSMutableArray *)filteredPalette - (IBAction)refreshColors:(id)sender { [[Palette sharedPalette] reloadAll]; - [self setFilteredPalette:nil]; - + self.shuffledColors = nil; [self.collectionView reloadData]; } - (IBAction)removeColors:(id)sender { [[Palette sharedPalette] removeAll]; - [_filteredPalette removeAllObjects]; - + [_shuffledColors removeAllObjects]; [self.collectionView reloadData]; } @@ -117,7 +104,7 @@ - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([[segue identifier] isEqualToString:@"collection_push_detail"]) { - SearchViewController *controller = [segue destinationViewController]; + DetailViewController *controller = [segue destinationViewController]; controller.selectedColor = sender; } } @@ -215,7 +202,7 @@ - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - return [self.filteredPalette count]; + return [self.shuffledColors count]; } - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath @@ -224,7 +211,7 @@ - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cell cell.selectedBackgroundView = [UIView new]; cell.selectedBackgroundView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.25]; - Color *color = self.filteredPalette[indexPath.row]; + Color *color = self.shuffledColors[indexPath.row]; cell.backgroundColor = color.color; return cell; @@ -235,7 +222,7 @@ - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cell - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { - Color *color = self.filteredPalette[indexPath.row]; + Color *color = self.shuffledColors[indexPath.row]; if ([self shouldPerformSegueWithIdentifier:@"collection_push_detail" sender:color]) { [self performSegueWithIdentifier:@"collection_push_detail" sender:color]; @@ -265,7 +252,7 @@ - (void)collectionView:(UICollectionView *)collectionView performAction:(SEL)act dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{ if ([NSStringFromSelector(action) isEqualToString:@"copy:"]) { - Color *color = self.filteredPalette[indexPath.row]; + Color *color = self.shuffledColors[indexPath.row]; if (color.hex.length > 0) [[UIPasteboard generalPasteboard] setString:color.hex]; } }); @@ -274,26 +261,20 @@ - (void)collectionView:(UICollectionView *)collectionView performAction:(SEL)act #pragma mark - View Auto-Rotation -- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration -{ - if (![UIInputViewController class]) { - [self.collectionView reloadData]; - } -} - - (void)willTransitionToTraitCollection:(UITraitCollection *)newCollection withTransitionCoordinator:(id)coordinator { [self.collectionView reloadData]; + [super willTransitionToTraitCollection:newCollection withTransitionCoordinator:coordinator]; } -- (UIInterfaceOrientationMask)supportedInterfaceOrientations +- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator { - return UIInterfaceOrientationMaskAll; -} - -- (BOOL)shouldAutorotate -{ - return YES; + // Called when device is rotated. Cell sizes should be recomputed when this + // happens (especially on iPad) since the cell sizes for portrait and landscape + // aren't exactly identical. Ignoring this fact leads to noticable white + // gaps between cells after rotation. + [self.collectionView reloadData]; + [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; } @end diff --git a/DZNEmptyDataSet/Colors/Colors/Colors-Info.plist b/DZNEmptyDataSet/Colors/Colors/Colors-Info.plist deleted file mode 100644 index c49ab804..00000000 --- a/DZNEmptyDataSet/Colors/Colors/Colors-Info.plist +++ /dev/null @@ -1,44 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleDisplayName - ${PRODUCT_NAME} - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIcons - - CFBundleIcons~ipad - - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1.0 - LSRequiresIPhoneOS - - UIMainStoryboardFile - Storyboard - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - - diff --git a/DZNEmptyDataSet/Colors/Colors/Colors-Prefix.pch b/DZNEmptyDataSet/Colors/Colors/Colors-Prefix.pch deleted file mode 100644 index 743435c9..00000000 --- a/DZNEmptyDataSet/Colors/Colors/Colors-Prefix.pch +++ /dev/null @@ -1,16 +0,0 @@ -// -// Prefix header -// -// The contents of this file are implicitly included at the beginning of every source file. -// - -#import - -#ifndef __IPHONE_3_0 -#warning "This project uses features only available in iOS SDK 3.0 and later." -#endif - -#ifdef __OBJC__ - #import - #import -#endif diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/Contents.json b/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 3e857877..00000000 --- a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,128 +0,0 @@ -{ - "images" : [ - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "icon-29.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "icon-29@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "icon-29@3x.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "icon-40@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "icon-40@3x.png", - "scale" : "3x" - }, - { - "size" : "57x57", - "idiom" : "iphone", - "filename" : "icon-57.png", - "scale" : "1x" - }, - { - "size" : "57x57", - "idiom" : "iphone", - "filename" : "icon-57@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "icon-60@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "icon-60@3x.png", - "scale" : "3x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "icon-29~ipad.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "icon-29@2x~ipad.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "icon-40~ipad.png", - "scale" : "1x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "icon-40@2x~ipad.png", - "scale" : "2x" - }, - { - "size" : "50x50", - "idiom" : "ipad", - "filename" : "icon-50~ipad.png", - "scale" : "1x" - }, - { - "size" : "50x50", - "idiom" : "ipad", - "filename" : "icon-50@2x~ipad.png", - "scale" : "2x" - }, - { - "size" : "72x72", - "idiom" : "ipad", - "filename" : "icon-72~ipad.png", - "scale" : "1x" - }, - { - "size" : "72x72", - "idiom" : "ipad", - "filename" : "icon-72@2x~ipad.png", - "scale" : "2x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "icon-76~ipad.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "icon-76@2x~ipad.png", - "scale" : "2x" - }, - { - "size" : "83.5x83.5", - "idiom" : "ipad", - "filename" : "icon-120~car.png", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-120~car.png b/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-120~car.png deleted file mode 100644 index a88f27bf..00000000 Binary files a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-120~car.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-29.png b/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-29.png deleted file mode 100644 index 2b9da15c..00000000 Binary files a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-29.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-29@2x.png b/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-29@2x.png deleted file mode 100644 index 512acd5a..00000000 Binary files a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-29@2x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-29@2x~ipad.png b/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-29@2x~ipad.png deleted file mode 100644 index 512acd5a..00000000 Binary files a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-29@2x~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-29@3x.png b/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-29@3x.png deleted file mode 100644 index 61e8e38a..00000000 Binary files a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-29@3x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-29~ipad.png b/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-29~ipad.png deleted file mode 100644 index 2b9da15c..00000000 Binary files a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-29~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-40@2x.png b/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-40@2x.png deleted file mode 100644 index f4f015c5..00000000 Binary files a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-40@2x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-40@2x~ipad.png b/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-40@2x~ipad.png deleted file mode 100644 index f4f015c5..00000000 Binary files a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-40@2x~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-40@3x.png b/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-40@3x.png deleted file mode 100644 index e0189f0c..00000000 Binary files a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-40@3x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-40~ipad.png b/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-40~ipad.png deleted file mode 100644 index c70364b1..00000000 Binary files a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-40~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-50@2x~ipad.png b/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-50@2x~ipad.png deleted file mode 100644 index ed3c8710..00000000 Binary files a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-50@2x~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-50~ipad.png b/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-50~ipad.png deleted file mode 100644 index 2f9c5bbe..00000000 Binary files a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-50~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-57.png b/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-57.png deleted file mode 100644 index 31ec0b30..00000000 Binary files a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-57.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-57@2x.png b/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-57@2x.png deleted file mode 100644 index 1523278c..00000000 Binary files a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-57@2x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-60@2x.png b/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-60@2x.png deleted file mode 100644 index a88f27bf..00000000 Binary files a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-60@2x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-60@3x.png b/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-60@3x.png deleted file mode 100644 index 840dac84..00000000 Binary files a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-60@3x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-72@2x~ipad.png b/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-72@2x~ipad.png deleted file mode 100644 index 041a6788..00000000 Binary files a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-72@2x~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-72~ipad.png b/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-72~ipad.png deleted file mode 100644 index cc742f3c..00000000 Binary files a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-72~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-76@2x~ipad.png b/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-76@2x~ipad.png deleted file mode 100644 index a46f09b6..00000000 Binary files a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-76@2x~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-76~ipad.png b/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-76~ipad.png deleted file mode 100644 index 53490c78..00000000 Binary files a/DZNEmptyDataSet/Colors/Colors/System.xcassets/AppIcon.appiconset/icon-76~ipad.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/LaunchImage.launchimage/Contents.json b/DZNEmptyDataSet/Colors/Colors/System.xcassets/LaunchImage.launchimage/Contents.json deleted file mode 100644 index acf54f94..00000000 --- a/DZNEmptyDataSet/Colors/Colors/System.xcassets/LaunchImage.launchimage/Contents.json +++ /dev/null @@ -1,146 +0,0 @@ -{ - "images" : [ - { - "extent" : "full-screen", - "idiom" : "iphone", - "subtype" : "736h", - "filename" : "Default-hd-plus@2x.png", - "minimum-system-version" : "8.0", - "orientation" : "portrait", - "scale" : "3x" - }, - { - "orientation" : "landscape", - "idiom" : "iphone", - "extent" : "full-screen", - "minimum-system-version" : "8.0", - "subtype" : "736h", - "scale" : "3x" - }, - { - "extent" : "full-screen", - "idiom" : "iphone", - "subtype" : "667h", - "filename" : "Default-hd@2x.png", - "minimum-system-version" : "8.0", - "orientation" : "portrait", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "filename" : "Default@2x.png", - "scale" : "2x" - }, - { - "extent" : "full-screen", - "idiom" : "iphone", - "subtype" : "retina4", - "filename" : "Default-568h@2x.png", - "minimum-system-version" : "7.0", - "orientation" : "portrait", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "1x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "2x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "subtype" : "retina4", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "to-status-bar", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "full-screen", - "scale" : "1x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "to-status-bar", - "scale" : "1x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "full-screen", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "to-status-bar", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "full-screen", - "scale" : "2x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "to-status-bar", - "scale" : "2x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "full-screen", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/LaunchImage.launchimage/Default-568h@2x.png b/DZNEmptyDataSet/Colors/Colors/System.xcassets/LaunchImage.launchimage/Default-568h@2x.png deleted file mode 100644 index 449199ff..00000000 Binary files a/DZNEmptyDataSet/Colors/Colors/System.xcassets/LaunchImage.launchimage/Default-568h@2x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/LaunchImage.launchimage/Default-hd-plus@2x.png b/DZNEmptyDataSet/Colors/Colors/System.xcassets/LaunchImage.launchimage/Default-hd-plus@2x.png deleted file mode 100644 index a99cdf33..00000000 Binary files a/DZNEmptyDataSet/Colors/Colors/System.xcassets/LaunchImage.launchimage/Default-hd-plus@2x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/LaunchImage.launchimage/Default-hd@2x.png b/DZNEmptyDataSet/Colors/Colors/System.xcassets/LaunchImage.launchimage/Default-hd@2x.png deleted file mode 100644 index b7c97e49..00000000 Binary files a/DZNEmptyDataSet/Colors/Colors/System.xcassets/LaunchImage.launchimage/Default-hd@2x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Colors/System.xcassets/LaunchImage.launchimage/Default@2x.png b/DZNEmptyDataSet/Colors/Colors/System.xcassets/LaunchImage.launchimage/Default@2x.png deleted file mode 100644 index 6ce251c9..00000000 Binary files a/DZNEmptyDataSet/Colors/Colors/System.xcassets/LaunchImage.launchimage/Default@2x.png and /dev/null differ diff --git a/DZNEmptyDataSet/Colors/Colors/en.lproj/InfoPlist.strings b/DZNEmptyDataSet/Colors/Colors/en.lproj/InfoPlist.strings deleted file mode 100644 index 477b28ff..00000000 --- a/DZNEmptyDataSet/Colors/Colors/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - diff --git a/DZNEmptyDataSet/Colors/Colors/main.m b/DZNEmptyDataSet/Colors/Colors/main.m deleted file mode 100644 index a7828b17..00000000 --- a/DZNEmptyDataSet/Colors/Colors/main.m +++ /dev/null @@ -1,18 +0,0 @@ -// -// main.m -// Colors -// -// Created by Ignacio Romero Z. on 6/19/14. -// Copyright (c) 2014 DZN Labs. All rights reserved. -// - -#import - -#import "AppDelegate.h" - -int main(int argc, char * argv[]) -{ - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/DZNEmptyDataSet/Colors/DetailViewController.h b/DZNEmptyDataSet/Colors/DetailViewController.h new file mode 100644 index 00000000..0caf986d --- /dev/null +++ b/DZNEmptyDataSet/Colors/DetailViewController.h @@ -0,0 +1,30 @@ +// +// DetailViewController.h +// Colors +// +// Created by Ignacio Romero Z. on 7/4/14. +// Copyright (c) 2014 DZN Labs. All rights reserved. +// + +#import + +@class Color; + +@interface DetailViewController : UIViewController + +@property (nonatomic, strong) Color *selectedColor; + +@property (weak, nonatomic) IBOutlet NSLayoutConstraint *portrait1; +@property (weak, nonatomic) IBOutlet NSLayoutConstraint *portrait2; +@property (weak, nonatomic) IBOutlet NSLayoutConstraint *portrait3; +@property (weak, nonatomic) IBOutlet NSLayoutConstraint *portrait4; + +@property (weak, nonatomic) IBOutlet NSLayoutConstraint *landscape1; +@property (weak, nonatomic) IBOutlet NSLayoutConstraint *landscape2; +@property (weak, nonatomic) IBOutlet NSLayoutConstraint *landscape3; +@property (weak, nonatomic) IBOutlet NSLayoutConstraint *landscape4; + +@property (weak, nonatomic) IBOutlet UIView *firstContainerView; +@property (weak, nonatomic) IBOutlet UIView *secondContainerView; + +@end diff --git a/DZNEmptyDataSet/Colors/DetailViewController.m b/DZNEmptyDataSet/Colors/DetailViewController.m new file mode 100644 index 00000000..a0aee544 --- /dev/null +++ b/DZNEmptyDataSet/Colors/DetailViewController.m @@ -0,0 +1,98 @@ +// +// DetailViewController.m +// Colors +// +// Created by Ignacio Romero Z. on 7/4/14. +// Copyright (c) 2014 DZN Labs. All rights reserved. +// + +#import "DetailViewController.h" +#import "Color.h" +#import "FirstContainerController.h" +#import "SecondContainerController.h" + +#import + +@interface DetailViewController () +@property (nonatomic,strong) NSArray* portraitConstraints; +@property (nonatomic,strong) NSArray* landscapeConstraints; +@end + +@implementation DetailViewController + +#pragma mark - Life Cycle + +- (void)viewWillAppear:(BOOL)animated +{ + [super viewWillAppear:animated]; + // As shown in *.storyboard, the DetailViewController's content comprises + // two container views managed by a FirstContainerController and a + // SecondContainerController . + FirstContainerController* firstContainerController = NULL; + SecondContainerController* secondContainerController = NULL; + for (UIViewController* child in [self childViewControllers]) { + if ([child isKindOfClass:[FirstContainerController class]]) { + firstContainerController = (FirstContainerController*)child; + } else if ([child isKindOfClass:[SecondContainerController class]]) { + secondContainerController = (SecondContainerController*)child; + } + } + // Populate content managed by firstContainerController . (image) + if (firstContainerController != NULL) { + firstContainerController.colorView.image = [Color roundImageForSize:firstContainerController.colorView.frame.size withColor:self.selectedColor.color]; + } + // Populate content managed by secondContainerController . (labels) + if (secondContainerController != NULL) { + secondContainerController.nameLabel.text = self.selectedColor.name; + secondContainerController.hexLabel.text = [NSString stringWithFormat:@"#%@", self.selectedColor.hex]; + secondContainerController.rgbLabel.text = self.selectedColor.rgb; + } +} + +-(void)viewDidLoad { + [super viewDidLoad]; + // Constraints + self.portraitConstraints=@[self.portrait1,self.portrait2,self.portrait3,self.portrait4]; + self.landscapeConstraints=@[self.landscape1,self.landscape2,self.landscape3,self.landscape4]; + [NSLayoutConstraint deactivateConstraints: self.portraitConstraints]; + [NSLayoutConstraint deactivateConstraints: self.landscapeConstraints]; +} + +- (void)viewWillDisappear:(BOOL)animated { + // Restrict app to presenting at most one DetailViewController at any time. + // This prevents situation where Collection, Table, and Search are all + // presenting their own different DetailViewController's with different + // colors. This behavior seems odd. Our remedy here is to pop the + // DetailViewController is user selects different item in the app's + // tab controller. + [super viewWillDisappear:animated]; + [self.navigationController popToRootViewControllerAnimated:animated]; +} + +#pragma mark - Adaptive User Interface + +-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator { + //////////////////////////////////////////////////////////////// + // "UIKit calls this method before changing the size of a presented + // view controller’s view. You can override this method in your own + // objects and use it to perform additional tasks related to the + // size change." + // https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIContentContainer_Ref/index.html + //////////////////////////////////////////////////////////////// + [coordinator animateAlongsideTransition:^ (id context) { + if (size.width context) { + [self.view setNeedsLayout]; + }]; + [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; +} + +@end diff --git a/DZNEmptyDataSet/Colors/FirstContainerController.h b/DZNEmptyDataSet/Colors/FirstContainerController.h new file mode 100644 index 00000000..63e2b3bd --- /dev/null +++ b/DZNEmptyDataSet/Colors/FirstContainerController.h @@ -0,0 +1,13 @@ +// +// FirstContainerController.h +// Colors +// +// Created by Kelly Roach on 9/4/18. +// Copyright © 2018 DZN. All rights reserved. +// + +#import + +@interface FirstContainerController : UIViewController +@property (nonatomic, weak) IBOutlet UIImageView *colorView; +@end diff --git a/DZNEmptyDataSet/Colors/FirstContainerController.m b/DZNEmptyDataSet/Colors/FirstContainerController.m new file mode 100644 index 00000000..97d4388f --- /dev/null +++ b/DZNEmptyDataSet/Colors/FirstContainerController.m @@ -0,0 +1,13 @@ +// +// FirstContainerController.m +// Colors +// +// Created by Kelly Roach on 9/4/18. +// Copyright © 2018 DZN. All rights reserved. +// + +#import "FirstContainerController.h" + +@implementation FirstContainerController + +@end diff --git a/DZNEmptyDataSet/Colors/Info.plist b/DZNEmptyDataSet/Colors/Info.plist index 95aa2a6a..c42d74dd 100644 --- a/DZNEmptyDataSet/Colors/Info.plist +++ b/DZNEmptyDataSet/Colors/Info.plist @@ -33,6 +33,7 @@ UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight + UIInterfaceOrientationPortraitUpsideDown diff --git a/DZNEmptyDataSet/Colors/NoColor.png b/DZNEmptyDataSet/Colors/NoColor.png new file mode 100644 index 00000000..f8daa4d8 Binary files /dev/null and b/DZNEmptyDataSet/Colors/NoColor.png differ diff --git a/DZNEmptyDataSet/Colors/SearchViewController.h b/DZNEmptyDataSet/Colors/SearchViewController.h index f49e11a5..d467e0e1 100644 --- a/DZNEmptyDataSet/Colors/SearchViewController.h +++ b/DZNEmptyDataSet/Colors/SearchViewController.h @@ -11,14 +11,6 @@ @class Color; @interface SearchViewController : UIViewController - @property (nonatomic, strong) Color *selectedColor; -@property (nonatomic, weak) IBOutlet UIImageView *colorView; -@property (nonatomic, weak) IBOutlet UILabel *nameLabel; -@property (nonatomic, weak) IBOutlet UILabel *hexLabel; -@property (nonatomic, weak) IBOutlet UILabel *rgbLabel; -@property (nonatomic, weak) IBOutlet UILabel *hexLegend; -@property (nonatomic, weak) IBOutlet UILabel *rgbLegend; - @end diff --git a/DZNEmptyDataSet/Colors/SearchViewController.m b/DZNEmptyDataSet/Colors/SearchViewController.m index 00daa570..c7e95e33 100644 --- a/DZNEmptyDataSet/Colors/SearchViewController.m +++ b/DZNEmptyDataSet/Colors/SearchViewController.m @@ -6,150 +6,99 @@ // Copyright (c) 2014 DZN Labs. All rights reserved. // +#import "DetailViewController.h" #import "SearchViewController.h" #import "Palette.h" #import "Color.h" #import -@interface SearchViewController () -@property (nonatomic, strong) NSArray *searchResult; -@property (nonatomic, getter = isShowingLandscape) BOOL showingLandscape; +@interface SearchViewController () +@property (nonatomic, strong) UISearchController *searchController; +@property (weak, nonatomic) IBOutlet UITableView *tableView; +@property (nonatomic, strong) NSMutableArray *filteredColors; @end @implementation SearchViewController -#pragma mark - View lifecycle - -- (void)awakeFromNib -{ - [super awakeFromNib]; - - self.title = @"Search"; - self.tabBarItem = [[UITabBarItem alloc] initWithTitle:self.title image:[UIImage imageNamed:@"tab_search"] tag:self.title.hash]; -} - -- (void)loadView -{ - [super loadView]; - - if ([self.navigationController.viewControllers count] == 1) { - self.searchDisplayController.displaysSearchBarInNavigationBar = YES; - } - else { - self.title = @"Detail"; - } - - self.searchDisplayController.searchResultsTableView.emptyDataSetSource = self; - self.searchDisplayController.searchResultsTableView.emptyDataSetDelegate = self; - - self.searchDisplayController.searchBar.placeholder = @"Search color"; - self.searchDisplayController.searchResultsTableView.tableFooterView = [UIView new]; - [self.searchDisplayController setValue:@"" forKey:@"_noResultsMessage"]; - - for (UIView *subview in self.view.subviews) { - subview.autoresizingMask = UIViewAutoresizingNone; - } -} +#pragma mark - Life Cycle - (void)viewDidLoad { + self.tableView.delegate = self; + self.tableView.dataSource = self; + self.tableView.emptyDataSetSource = self; + self.tableView.emptyDataSetDelegate = self; + self.tableView.tableFooterView = [UIView new]; + + // SEE: "Listing 1 Creating and configuring a search controller on iOS" + // https://developer.apple.com/documentation/uikit/uisearchcontroller + // Create the search results controller and store a reference to it. + self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil]; + // Use the current view controller to update the search results. + self.searchController.searchResultsUpdater = self; + // Install the search bar as the table header. + self.tableView.tableHeaderView = self.searchController.searchBar; + // It is usually good to set the presentation context. + self.definesPresentationContext = YES; + + self.searchController.searchBar.placeholder = @"Search color"; + self.searchController.delegate = self; + self.searchController.dimsBackgroundDuringPresentation = NO; + self.searchController.searchBar.delegate = self; + [super viewDidLoad]; - - self.showingLandscape = UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation); - [self updateLayoutAnimatedWithDuration:0.0]; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - - [self updateContent]; + self.filteredColors = nil; + [self.tableView reloadData]; } - #pragma mark - Getters -- (NSArray *)searchResult +- (NSMutableArray *)filteredColors { - if (_searchResult) { - return _searchResult; - } - - NSString *searchString = self.searchDisplayController.searchBar.text; - - if (searchString.length == 0) { - return nil; + if (!_filteredColors) + { + UISearchBar *searchBar = self.searchController.searchBar; + _filteredColors = [[[Palette sharedPalette] colors] mutableCopy]; + if ([searchBar isFirstResponder] && searchBar.text.length > 0) + { + NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name CONTAINS[cd] %@", searchBar.text]; + [_filteredColors filterUsingPredicate:predicate]; + } } - - NSArray *colors = [[Palette sharedPalette] colors]; - NSPredicate *precidate = [NSPredicate predicateWithFormat:@"name CONTAINS[cd] %@ || hex CONTAINS[cd] %@", searchString, searchString]; - - _searchResult = [colors filteredArrayUsingPredicate:precidate]; - - return _searchResult; + return _filteredColors; } - #pragma mark - Actions -- (void)updateLayoutAnimatedWithDuration:(NSTimeInterval)duration +- (IBAction)refreshColors:(id)sender { - [UIView beginAnimations:@"" context:nil]; - [UIView setAnimationDuration:duration]; - [UIView setAnimationBeginsFromCurrentState:YES]; - - if (self.showingLandscape) { - self.colorView.frame = CGRectMake(45.0, 88.0, 160.0, 160.0); - self.nameLabel.frame = CGRectMake(240.0, 114.0, 280.0, 35.0); - self.hexLabel.frame = CGRectMake(300.0, 170.0, 140.0, 20.0); - self.rgbLabel.frame = CGRectMake(300.0, 200.0, 140.0, 20.0); - self.hexLegend.frame = CGRectMake(240.0, 170.0, 60.0, 20.0); - self.rgbLegend.frame = CGRectMake(240.0, 200.0, 60.0, 20.0); - - self.nameLabel.textAlignment = NSTextAlignmentLeft; - } - else { - self.colorView.frame = CGRectMake(60.0, 130.0, 200.0, 200.0); - self.nameLabel.frame = CGRectMake(20.0, 350.0, 280.0, 35.0); - self.hexLabel.frame = CGRectMake(120.0, 420.0, 140.0, 20.0); - self.rgbLabel.frame = CGRectMake(120.0, 450.0, 140.0, 20.0); - self.hexLegend.frame = CGRectMake(60.0, 420.0, 60.0, 20.0); - self.rgbLegend.frame = CGRectMake(60.0, 450.0, 60.0, 20.0); - - self.nameLabel.textAlignment = NSTextAlignmentCenter; - } - - [UIView commitAnimations]; + [[Palette sharedPalette] reloadAll]; + self.filteredColors = nil; + [self.tableView reloadData]; } -- (void)updateContent +- (IBAction)removeColors:(id)sender { - BOOL hide = self.selectedColor ? NO : YES; - - self.colorView.hidden = hide; - self.nameLabel.hidden = hide; - self.hexLabel.hidden = hide; - self.rgbLabel.hidden = hide; - self.hexLegend.hidden = hide; - self.rgbLegend.hidden = hide; - - self.colorView.image = [Color roundImageForSize:self.colorView.frame.size withColor:self.selectedColor.color]; - - self.nameLabel.text = self.selectedColor.name; - self.hexLabel.text = [NSString stringWithFormat:@"#%@", self.selectedColor.hex]; - self.rgbLabel.text = self.selectedColor.rgb; + [[Palette sharedPalette] removeAll]; + [_filteredColors removeAllObjects]; + [self.tableView reloadData]; } -- (void)adjustToDeviceOrientation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - self.showingLandscape = UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation); - [self updateLayoutAnimatedWithDuration:0.25]; - - [self.searchDisplayController.searchResultsTableView reloadEmptyDataSet]; + if ([[segue identifier] isEqualToString:@"search_push_detail"]) + { + DetailViewController *controller = [segue destinationViewController]; + controller.selectedColor = sender; + } } - #pragma mark - DZNEmptyDataSetSource Methods - (NSAttributedString *)titleForEmptyDataSet:(UIScrollView *)scrollView @@ -185,9 +134,8 @@ - (NSAttributedString *)descriptionForEmptyDataSet:(UIScrollView *)scrollView - (NSAttributedString *)buttonTitleForEmptyDataSet:(UIScrollView *)scrollView forState:(UIControlState)state { NSString *text = @"Add a New Color"; - UIColor *color = nil; + UIColor *color = [UIColor colorWithRed:44/255.0 green:137/255.0 blue:202/255.0 alpha:1.0]; - if (state == UIControlStateNormal) color = [UIColor colorWithRed:44/255.0 green:137/255.0 blue:202/255.0 alpha:1.0]; if (state == UIControlStateHighlighted) color = [UIColor colorWithRed:106/255.0 green:187/255.0 blue:227/255.0 alpha:1.0]; NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new]; @@ -233,13 +181,13 @@ - (BOOL)emptyDataSetShouldAllowTouch:(UIScrollView *)scrollView - (BOOL)emptyDataSetShouldAllowScroll:(UIScrollView *)scrollView { - return NO; + return YES; } - (void)emptyDataSet:(UIScrollView *)scrollView didTapView:(UIView *)view { - [self.searchDisplayController setActive:NO animated:YES]; + // TODO: [self.searchController setActive:NO animated:YES]; } - (void)emptyDataSet:(UIScrollView *)scrollView didTapButton:(UIButton *)button @@ -257,7 +205,9 @@ - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.searchResult.count; + NSInteger rowCount = [self filteredColors].count; + + return rowCount; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath @@ -275,7 +225,7 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N cell.detailTextLabel.textColor = [UIColor colorWithWhite:0.5 alpha:1.0]; } - Color *color = self.searchResult[indexPath.row]; + Color *color = [[self filteredColors] objectAtIndex:indexPath.row]; cell.textLabel.text = color.name; cell.detailTextLabel.text = [NSString stringWithFormat:@"#%@", color.hex]; @@ -290,60 +240,101 @@ - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPa return 56.0; } - #pragma mark - UITableViewDelegate Methods - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - self.selectedColor = self.searchResult[indexPath.row]; - [self updateContent]; + Color *color = [[self filteredColors] objectAtIndex:indexPath.row]; + + if ([self shouldPerformSegueWithIdentifier:@"search_push_detail" sender:color]) { + [self performSegueWithIdentifier:@"search_push_detail" sender:color]; + } - [self.searchDisplayController setActive:NO animated:YES]; + [tableView deselectRowAtIndexPath:indexPath animated:YES]; } +#pragma mark - UISearchBarDelegate Methods -#pragma mark - UISearchDisplayControllerDelegate Methods +- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar +{ + return YES; +} -- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString +- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar { - _searchResult = nil; - return YES; } -- (void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableView +- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar { // Do something } -- (void)searchDisplayController:(UISearchDisplayController *)controller didShowSearchResultsTableView:(UITableView *)tableView +- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar { // Do something } +- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar +{ + // Do something +} -#pragma mark - View Auto-Rotation +- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar +{ + // Do something +} -- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration +- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { - if (![self respondsToSelector:@selector(willTransitionToTraitCollection:withTransitionCoordinator:)]) { - [self adjustToDeviceOrientation]; - } + [self updateSearchResultsForSearchController:self.searchController]; } -- (void)willTransitionToTraitCollection:(UITraitCollection *)newCollection withTransitionCoordinator:(id)coordinator +- (void)searchBar:(UISearchBar *)searchBar selectedScopeButtonIndexDidChange:(NSInteger)selectedScope { - [self adjustToDeviceOrientation]; + [self updateSearchResultsForSearchController:self.searchController]; } -- (UIInterfaceOrientationMask)supportedInterfaceOrientations +- (void)searchForText:(NSString *)searchString { - return UIInterfaceOrientationMaskAll; + //NSLog(@"searchString == %@",searchString); } -- (BOOL)shouldAutorotate +#pragma mark - UISearchResultsUpdating Protocol + +- (void)updateSearchResultsForSearchController:(UISearchController *)searchController { - return YES; + NSString *searchString = _searchController.searchBar.text; + [self searchForText:searchString]; + self.filteredColors = nil; + [self.tableView reloadData]; +} + +#pragma mark - UISearchControllerDelegate Protocol + +- (void)didDismissSearchController:(UISearchController *)searchController +{ + // Do something +} + +- (void)didPresentSearchController:(UISearchController *)searchController +{ + // Do something +} + +- (void)presentSearchController:(UISearchController *)searchController +{ + // Do something +} + +- (void)willDismissSearchController:(UISearchController *)searchController +{ + // Do something +} + +- (void)willPresentSearchController:(UISearchController *)searchController +{ + // Do something } @end diff --git a/DZNEmptyDataSet/Colors/SecondContainerController.h b/DZNEmptyDataSet/Colors/SecondContainerController.h new file mode 100644 index 00000000..f0bfd2a2 --- /dev/null +++ b/DZNEmptyDataSet/Colors/SecondContainerController.h @@ -0,0 +1,17 @@ +// +// SecondContainerController.h +// Colors +// +// Created by Kelly Roach on 9/4/18. +// Copyright © 2018 DZN. All rights reserved. +// + +#import + +@interface SecondContainerController : UIViewController +@property (nonatomic, weak) IBOutlet UILabel *nameLabel; +@property (nonatomic, weak) IBOutlet UILabel *hexLegend; +@property (nonatomic, weak) IBOutlet UILabel *hexLabel; +@property (nonatomic, weak) IBOutlet UILabel *rgbLegend; +@property (nonatomic, weak) IBOutlet UILabel *rgbLabel; +@end diff --git a/DZNEmptyDataSet/Colors/SecondContainerController.m b/DZNEmptyDataSet/Colors/SecondContainerController.m new file mode 100644 index 00000000..0b099bad --- /dev/null +++ b/DZNEmptyDataSet/Colors/SecondContainerController.m @@ -0,0 +1,13 @@ +// +// SecondContainerController.m +// Colors +// +// Created by Kelly Roach on 9/4/18. +// Copyright © 2018 DZN. All rights reserved. +// + +#import "SecondContainerController.h" + +@implementation SecondContainerController + +@end diff --git a/DZNEmptyDataSet/Colors/Storyboard.storyboard b/DZNEmptyDataSet/Colors/Storyboard.storyboard deleted file mode 100755 index 377da234..00000000 --- a/DZNEmptyDataSet/Colors/Storyboard.storyboard +++ /dev/null @@ -1,255 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DZNEmptyDataSet/Colors/TableViewController.m b/DZNEmptyDataSet/Colors/TableViewController.m index 781f3722..ab220354 100644 --- a/DZNEmptyDataSet/Colors/TableViewController.m +++ b/DZNEmptyDataSet/Colors/TableViewController.m @@ -7,7 +7,7 @@ // #import "TableViewController.h" -#import "SearchViewController.h" +#import "DetailViewController.h" #import "Palette.h" #import "Color.h" @@ -18,27 +18,11 @@ @interface TableViewController () 0) [[UIPasteboard generalPasteboard] setString:color.hex]; @@ -233,17 +199,4 @@ - (void)tableView:(UITableView *)tableView performAction:(SEL)action forRowAtInd }); } - -#pragma mark - View Auto-Rotation - -- (UIInterfaceOrientationMask)supportedInterfaceOrientations -{ - return UIInterfaceOrientationMaskAll; -} - -- (BOOL)shouldAutorotate -{ - return YES; -} - @end diff --git a/DZNEmptyDataSet/DZNEmptyDataSet.xcodeproj/project.pbxproj b/DZNEmptyDataSet/DZNEmptyDataSet.xcodeproj/project.pbxproj index ea20bc1a..3a081a3b 100644 --- a/DZNEmptyDataSet/DZNEmptyDataSet.xcodeproj/project.pbxproj +++ b/DZNEmptyDataSet/DZNEmptyDataSet.xcodeproj/project.pbxproj @@ -8,67 +8,166 @@ /* Begin PBXBuildFile section */ B2BC14E3498BA30F9A20FE75 /* Pods_DZNEmptyDataSetTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 391AA672D1AC4F1C3C5186F7 /* Pods_DZNEmptyDataSetTests.framework */; }; - F56CEC4B1E67430000E2FACA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F58A3E7F1E66B62F0086E0EF /* Assets.xcassets */; }; + E108711F21644A7C0023FC5E /* DZNEmptyDataSet.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F58A3E321E66AEE90086E0EF /* DZNEmptyDataSet.framework */; }; + E108712021644A7C0023FC5E /* DZNEmptyDataSet.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F58A3E321E66AEE90086E0EF /* DZNEmptyDataSet.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + E108712421644A9B0023FC5E /* DZNEmptyDataSet.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F58A3E321E66AEE90086E0EF /* DZNEmptyDataSet.framework */; }; + E108712521644A9B0023FC5E /* DZNEmptyDataSet.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F58A3E321E66AEE90086E0EF /* DZNEmptyDataSet.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + E139974F213F6E8A00689E6F /* UIColor+Hexadecimal.m in Sources */ = {isa = PBXBuildFile; fileRef = E14E1D93213E4F2C00647A29 /* UIColor+Hexadecimal.m */; }; + E1399750213F6E9A00689E6F /* Application.m in Sources */ = {isa = PBXBuildFile; fileRef = E14E1D88213E4F2C00647A29 /* Application.m */; }; + E1399751213F6EAB00689E6F /* DetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E14E1D8C213E4F2C00647A29 /* DetailViewController.m */; }; + E1399752213F6EC300689E6F /* applications.json in Resources */ = {isa = PBXBuildFile; fileRef = E14E1D87213E4F2C00647A29 /* applications.json */; }; + E1399753213F6ECD00689E6F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E14E1D8B213E4F2C00647A29 /* Assets.xcassets */; }; + E14E1D76213E4F1B00647A29 /* Palette.m in Sources */ = {isa = PBXBuildFile; fileRef = E14E1D5E213E4F1B00647A29 /* Palette.m */; }; + E14E1D77213E4F1B00647A29 /* UIColor+Hex.m in Sources */ = {isa = PBXBuildFile; fileRef = E14E1D5F213E4F1B00647A29 /* UIColor+Hex.m */; }; + E14E1D78213E4F1B00647A29 /* colors.json in Resources */ = {isa = PBXBuildFile; fileRef = E14E1D63213E4F1B00647A29 /* colors.json */; }; + E14E1D79213E4F1B00647A29 /* Color.m in Sources */ = {isa = PBXBuildFile; fileRef = E14E1D64213E4F1B00647A29 /* Color.m */; }; + E14E1D7A213E4F1B00647A29 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E14E1D68213E4F1B00647A29 /* Assets.xcassets */; }; + E14E1D7B213E4F1B00647A29 /* SearchViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E14E1D69213E4F1B00647A29 /* SearchViewController.m */; }; + E14E1D7C213E4F1B00647A29 /* DetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E14E1D6A213E4F1B00647A29 /* DetailViewController.m */; }; + E14E1D7D213E4F1B00647A29 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E14E1D6B213E4F1B00647A29 /* LaunchScreen.storyboard */; }; + E14E1D7E213E4F1B00647A29 /* Storyboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E14E1D6D213E4F1B00647A29 /* Storyboard.storyboard */; }; + E14E1D7F213E4F1B00647A29 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = E14E1D6F213E4F1B00647A29 /* main.m */; }; + E14E1D80213E4F1B00647A29 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = E14E1D70213E4F1B00647A29 /* AppDelegate.m */; }; + E14E1D81213E4F1B00647A29 /* CollectionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E14E1D71213E4F1B00647A29 /* CollectionViewController.m */; }; + E14E1D82213E4F1B00647A29 /* TableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E14E1D72213E4F1B00647A29 /* TableViewController.m */; }; + E14E1D9D213E4F2C00647A29 /* applications.json in Resources */ = {isa = PBXBuildFile; fileRef = E14E1D87213E4F2C00647A29 /* applications.json */; }; + E14E1D9E213E4F2C00647A29 /* Application.m in Sources */ = {isa = PBXBuildFile; fileRef = E14E1D88213E4F2C00647A29 /* Application.m */; }; + E14E1D9F213E4F2C00647A29 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E14E1D8B213E4F2C00647A29 /* Assets.xcassets */; }; + E14E1DA0213E4F2C00647A29 /* DetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E14E1D8C213E4F2C00647A29 /* DetailViewController.m */; }; + E14E1DA1213E4F2C00647A29 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E14E1D8D213E4F2C00647A29 /* LaunchScreen.storyboard */; }; + E14E1DA2213E4F2C00647A29 /* Storyboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E14E1D8F213E4F2C00647A29 /* Storyboard.storyboard */; }; + E14E1DA3213E4F2C00647A29 /* MainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E14E1D91213E4F2C00647A29 /* MainViewController.m */; }; + E14E1DA4213E4F2C00647A29 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = E14E1D92213E4F2C00647A29 /* main.m */; }; + E14E1DA5213E4F2C00647A29 /* UIColor+Hexadecimal.m in Sources */ = {isa = PBXBuildFile; fileRef = E14E1D93213E4F2C00647A29 /* UIColor+Hexadecimal.m */; }; + E14E1DA6213E4F2C00647A29 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = E14E1D94213E4F2C00647A29 /* AppDelegate.m */; }; + E14E1DA7213E4F2C00647A29 /* IdealSans-Book-Pro.otf in Resources */ = {isa = PBXBuildFile; fileRef = E14E1D97213E4F2C00647A29 /* IdealSans-Book-Pro.otf */; }; + E14E1DA8213E4F2C00647A29 /* Lato-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E14E1D99213E4F2C00647A29 /* Lato-Regular.ttf */; }; + E18BE440213FAB9C00D0AD21 /* FirstContainerController.m in Sources */ = {isa = PBXBuildFile; fileRef = E18BE43F213FAB9C00D0AD21 /* FirstContainerController.m */; }; + E18BE443213FABCF00D0AD21 /* SecondContainerController.m in Sources */ = {isa = PBXBuildFile; fileRef = E18BE442213FABCF00D0AD21 /* SecondContainerController.m */; }; + E1DB652E2142009D0083EDBE /* NoApplication.png in Resources */ = {isa = PBXBuildFile; fileRef = E1DB652D2142009D0083EDBE /* NoApplication.png */; }; + E1DB6530214203BF0083EDBE /* NoColor.png in Resources */ = {isa = PBXBuildFile; fileRef = E1DB652F214203BF0083EDBE /* NoColor.png */; }; F58A3E3C1E66AEE90086E0EF /* DZNEmptyDataSet.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F58A3E321E66AEE90086E0EF /* DZNEmptyDataSet.framework */; }; F58A3E411E66AEE90086E0EF /* ApplicationsSnapshotTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F58A3E401E66AEE90086E0EF /* ApplicationsSnapshotTests.m */; }; F58A3E431E66AEE90086E0EF /* DZNEmptyDataSet.h in Headers */ = {isa = PBXBuildFile; fileRef = F58A3E351E66AEE90086E0EF /* DZNEmptyDataSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; F58A3E4E1E66AF400086E0EF /* UIScrollView+EmptyDataSet.h in Headers */ = {isa = PBXBuildFile; fileRef = F58A3E4C1E66AF400086E0EF /* UIScrollView+EmptyDataSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; F58A3E4F1E66AF400086E0EF /* UIScrollView+EmptyDataSet.m in Sources */ = {isa = PBXBuildFile; fileRef = F58A3E4D1E66AF400086E0EF /* UIScrollView+EmptyDataSet.m */; }; - F58A3E931E66B62F0086E0EF /* Application.m in Sources */ = {isa = PBXBuildFile; fileRef = F58A3E7B1E66B62F0086E0EF /* Application.m */; }; - F58A3E951E66B62F0086E0EF /* applications.json in Resources */ = {isa = PBXBuildFile; fileRef = F58A3E7E1E66B62F0086E0EF /* applications.json */; }; - F58A3E961E66B62F0086E0EF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F58A3E7F1E66B62F0086E0EF /* Assets.xcassets */; }; - F58A3E971E66B62F0086E0EF /* DetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F58A3E811E66B62F0086E0EF /* DetailViewController.m */; }; - F58A3E981E66B62F0086E0EF /* IdealSans-Book-Pro.otf in Resources */ = {isa = PBXBuildFile; fileRef = F58A3E841E66B62F0086E0EF /* IdealSans-Book-Pro.otf */; }; - F58A3E991E66B62F0086E0EF /* Lato-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = F58A3E861E66B62F0086E0EF /* Lato-Regular.ttf */; }; - F58A3E9A1E66B62F0086E0EF /* MainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F58A3E881E66B62F0086E0EF /* MainViewController.m */; }; - F58A3E9C1E66B62F0086E0EF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F58A3E8B1E66B62F0086E0EF /* LaunchScreen.storyboard */; }; - F58A3E9F1E66B62F0086E0EF /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = F58A3E901E66B62F0086E0EF /* main.m */; }; - F58A3EA01E66B62F0086E0EF /* UIColor+Hexadecimal.m in Sources */ = {isa = PBXBuildFile; fileRef = F58A3E921E66B62F0086E0EF /* UIColor+Hexadecimal.m */; }; - F58A3EA31E66B6C70086E0EF /* Applications-Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = F58A3EA21E66B6C70086E0EF /* Applications-Prefix.pch */; }; - F58A3EA51E66B6D70086E0EF /* Storyboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F58A3EA41E66B6D70086E0EF /* Storyboard.storyboard */; }; - F58A3EA81E66B6F10086E0EF /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F58A3EA71E66B6F10086E0EF /* AppDelegate.m */; }; - F58A3EA91E66B7940086E0EF /* DZNEmptyDataSet.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F58A3E321E66AEE90086E0EF /* DZNEmptyDataSet.framework */; }; - F58A3EAA1E66BD5A0086E0EF /* applications.json in Resources */ = {isa = PBXBuildFile; fileRef = F58A3E7E1E66B62F0086E0EF /* applications.json */; }; - F58A3EAB1E66BD5D0086E0EF /* Application.m in Sources */ = {isa = PBXBuildFile; fileRef = F58A3E7B1E66B62F0086E0EF /* Application.m */; }; - F58A3EAC1E66BD620086E0EF /* DetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F58A3E811E66B62F0086E0EF /* DetailViewController.m */; }; - F58A3EAD1E66BF270086E0EF /* UIColor+Hexadecimal.m in Sources */ = {isa = PBXBuildFile; fileRef = F58A3E921E66B62F0086E0EF /* UIColor+Hexadecimal.m */; }; - F5BE15291E713E2100F6FBEA /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = F5BE15281E713E2100F6FBEA /* main.m */; }; - F5BE152C1E713E2100F6FBEA /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F5BE152B1E713E2100F6FBEA /* AppDelegate.m */; }; - F5BE15341E713E2100F6FBEA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F5BE15331E713E2100F6FBEA /* Assets.xcassets */; }; - F5BE15371E713E2100F6FBEA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F5BE15351E713E2100F6FBEA /* LaunchScreen.storyboard */; }; - F5BE154A1E713E9300F6FBEA /* CollectionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F5BE153D1E713E9300F6FBEA /* CollectionViewController.m */; }; - F5BE154B1E713E9300F6FBEA /* Color.m in Sources */ = {isa = PBXBuildFile; fileRef = F5BE15401E713E9300F6FBEA /* Color.m */; }; - F5BE154C1E713E9300F6FBEA /* colors.json in Resources */ = {isa = PBXBuildFile; fileRef = F5BE15411E713E9300F6FBEA /* colors.json */; }; - F5BE154D1E713E9300F6FBEA /* Palette.m in Sources */ = {isa = PBXBuildFile; fileRef = F5BE15431E713E9300F6FBEA /* Palette.m */; }; - F5BE154E1E713E9300F6FBEA /* UIColor+Hex.m in Sources */ = {isa = PBXBuildFile; fileRef = F5BE15451E713E9300F6FBEA /* UIColor+Hex.m */; }; - F5BE154F1E713E9300F6FBEA /* SearchViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F5BE15471E713E9300F6FBEA /* SearchViewController.m */; }; - F5BE15501E713E9300F6FBEA /* TableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F5BE15491E713E9300F6FBEA /* TableViewController.m */; }; - F5BE15521E713E9B00F6FBEA /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F5BE15511E713E9B00F6FBEA /* Images.xcassets */; }; - F5BE15561E713EC800F6FBEA /* Storyboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F5BE15551E713EC800F6FBEA /* Storyboard.storyboard */; }; - F5BE15571E71446300F6FBEA /* DZNEmptyDataSet.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F58A3E321E66AEE90086E0EF /* DZNEmptyDataSet.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - F58A3E3D1E66AEE90086E0EF /* PBXContainerItemProxy */ = { + E1075A1C216451F10037C940 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = F58A3E291E66AEE90086E0EF /* Project object */; + proxyType = 1; + remoteGlobalIDString = F58A3E621E66B5410086E0EF; + remoteInfo = Applications; + }; + E108712121644A7C0023FC5E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = F58A3E291E66AEE90086E0EF /* Project object */; proxyType = 1; remoteGlobalIDString = F58A3E311E66AEE90086E0EF; remoteInfo = DZNEmptyDataSet; }; - F5BE151F1E713A7100F6FBEA /* PBXContainerItemProxy */ = { + E108712621644A9B0023FC5E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = F58A3E291E66AEE90086E0EF /* Project object */; proxyType = 1; - remoteGlobalIDString = F58A3E621E66B5410086E0EF; - remoteInfo = Applications; + remoteGlobalIDString = F58A3E311E66AEE90086E0EF; + remoteInfo = DZNEmptyDataSet; + }; + F58A3E3D1E66AEE90086E0EF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = F58A3E291E66AEE90086E0EF /* Project object */; + proxyType = 1; + remoteGlobalIDString = F58A3E311E66AEE90086E0EF; + remoteInfo = DZNEmptyDataSet; }; /* End PBXContainerItemProxy section */ +/* Begin PBXCopyFilesBuildPhase section */ + E108712321644A7C0023FC5E /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + E108712021644A7C0023FC5E /* DZNEmptyDataSet.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + E108712821644A9B0023FC5E /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + E108712521644A9B0023FC5E /* DZNEmptyDataSet.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + E108712921644CBB0023FC5E /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ 273E51E5FA96821F8F582949 /* Pods-DZNEmptyDataSetTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DZNEmptyDataSetTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests.release.xcconfig"; sourceTree = ""; }; 391AA672D1AC4F1C3C5186F7 /* Pods_DZNEmptyDataSetTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_DZNEmptyDataSetTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 52A7392318BDCC558DB8399F /* Pods-DZNEmptyDataSetTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DZNEmptyDataSetTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests.debug.xcconfig"; sourceTree = ""; }; + E14E1D5E213E4F1B00647A29 /* Palette.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Palette.m; sourceTree = ""; }; + E14E1D5F213E4F1B00647A29 /* UIColor+Hex.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIColor+Hex.m"; sourceTree = ""; }; + E14E1D60213E4F1B00647A29 /* Color.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Color.h; sourceTree = ""; }; + E14E1D61213E4F1B00647A29 /* Palette.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Palette.h; sourceTree = ""; }; + E14E1D62213E4F1B00647A29 /* UIColor+Hex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIColor+Hex.h"; sourceTree = ""; }; + E14E1D63213E4F1B00647A29 /* colors.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = colors.json; sourceTree = ""; }; + E14E1D64213E4F1B00647A29 /* Color.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Color.m; sourceTree = ""; }; + E14E1D65213E4F1B00647A29 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + E14E1D66213E4F1B00647A29 /* TableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableViewController.h; sourceTree = ""; }; + E14E1D67213E4F1B00647A29 /* CollectionViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollectionViewController.h; sourceTree = ""; }; + E14E1D68213E4F1B00647A29 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + E14E1D69213E4F1B00647A29 /* SearchViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchViewController.m; sourceTree = ""; }; + E14E1D6A213E4F1B00647A29 /* DetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DetailViewController.m; sourceTree = ""; }; + E14E1D6C213E4F1B00647A29 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + E14E1D6E213E4F1B00647A29 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Storyboard.storyboard; sourceTree = ""; }; + E14E1D6F213E4F1B00647A29 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + E14E1D70213E4F1B00647A29 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + E14E1D71213E4F1B00647A29 /* CollectionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CollectionViewController.m; sourceTree = ""; }; + E14E1D72213E4F1B00647A29 /* TableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TableViewController.m; sourceTree = ""; }; + E14E1D73213E4F1B00647A29 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + E14E1D74213E4F1B00647A29 /* SearchViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchViewController.h; sourceTree = ""; }; + E14E1D75213E4F1B00647A29 /* DetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetailViewController.h; sourceTree = ""; }; + E14E1D86213E4F2C00647A29 /* Application.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Application.h; sourceTree = ""; }; + E14E1D87213E4F2C00647A29 /* applications.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = applications.json; sourceTree = ""; }; + E14E1D88213E4F2C00647A29 /* Application.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Application.m; sourceTree = ""; }; + E14E1D89213E4F2C00647A29 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + E14E1D8A213E4F2C00647A29 /* UIColor+Hexadecimal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIColor+Hexadecimal.h"; sourceTree = ""; }; + E14E1D8B213E4F2C00647A29 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + E14E1D8C213E4F2C00647A29 /* DetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DetailViewController.m; sourceTree = ""; }; + E14E1D8E213E4F2C00647A29 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + E14E1D90213E4F2C00647A29 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Storyboard.storyboard; sourceTree = ""; }; + E14E1D91213E4F2C00647A29 /* MainViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainViewController.m; sourceTree = ""; }; + E14E1D92213E4F2C00647A29 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + E14E1D93213E4F2C00647A29 /* UIColor+Hexadecimal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIColor+Hexadecimal.m"; sourceTree = ""; }; + E14E1D94213E4F2C00647A29 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + E14E1D97213E4F2C00647A29 /* IdealSans-Book-Pro.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "IdealSans-Book-Pro.otf"; sourceTree = ""; }; + E14E1D99213E4F2C00647A29 /* Lato-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Lato-Regular.ttf"; sourceTree = ""; }; + E14E1D9A213E4F2C00647A29 /* MainViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainViewController.h; sourceTree = ""; }; + E14E1D9B213E4F2C00647A29 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + E14E1D9C213E4F2C00647A29 /* DetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetailViewController.h; sourceTree = ""; }; + E18BE43E213FAB9C00D0AD21 /* FirstContainerController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FirstContainerController.h; sourceTree = ""; }; + E18BE43F213FAB9C00D0AD21 /* FirstContainerController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FirstContainerController.m; sourceTree = ""; }; + E18BE441213FABCF00D0AD21 /* SecondContainerController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SecondContainerController.h; sourceTree = ""; }; + E18BE442213FABCF00D0AD21 /* SecondContainerController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SecondContainerController.m; sourceTree = ""; }; + E1DB652D2142009D0083EDBE /* NoApplication.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = NoApplication.png; sourceTree = ""; }; + E1DB652F214203BF0083EDBE /* NoColor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = NoColor.png; sourceTree = ""; }; F58A3E321E66AEE90086E0EF /* DZNEmptyDataSet.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DZNEmptyDataSet.framework; sourceTree = BUILT_PRODUCTS_DIR; }; F58A3E351E66AEE90086E0EF /* DZNEmptyDataSet.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DZNEmptyDataSet.h; sourceTree = ""; }; F58A3E361E66AEE90086E0EF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -78,48 +177,7 @@ F58A3E4C1E66AF400086E0EF /* UIScrollView+EmptyDataSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+EmptyDataSet.h"; path = "../../Source/UIScrollView+EmptyDataSet.h"; sourceTree = ""; }; F58A3E4D1E66AF400086E0EF /* UIScrollView+EmptyDataSet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+EmptyDataSet.m"; path = "../../Source/UIScrollView+EmptyDataSet.m"; sourceTree = ""; }; F58A3E631E66B5410086E0EF /* Applications.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Applications.app; sourceTree = BUILT_PRODUCTS_DIR; }; - F58A3E7A1E66B62F0086E0EF /* Application.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Application.h; sourceTree = ""; }; - F58A3E7B1E66B62F0086E0EF /* Application.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Application.m; sourceTree = ""; }; - F58A3E7E1E66B62F0086E0EF /* applications.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = applications.json; sourceTree = ""; }; - F58A3E7F1E66B62F0086E0EF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - F58A3E801E66B62F0086E0EF /* DetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetailViewController.h; sourceTree = ""; }; - F58A3E811E66B62F0086E0EF /* DetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DetailViewController.m; sourceTree = ""; }; - F58A3E841E66B62F0086E0EF /* IdealSans-Book-Pro.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "IdealSans-Book-Pro.otf"; sourceTree = ""; }; - F58A3E861E66B62F0086E0EF /* Lato-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Lato-Regular.ttf"; sourceTree = ""; }; - F58A3E871E66B62F0086E0EF /* MainViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainViewController.h; sourceTree = ""; }; - F58A3E881E66B62F0086E0EF /* MainViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainViewController.m; sourceTree = ""; }; - F58A3E8C1E66B62F0086E0EF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - F58A3E8E1E66B62F0086E0EF /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - F58A3E8F1E66B62F0086E0EF /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - F58A3E901E66B62F0086E0EF /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - F58A3E911E66B62F0086E0EF /* UIColor+Hexadecimal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIColor+Hexadecimal.h"; sourceTree = ""; }; - F58A3E921E66B62F0086E0EF /* UIColor+Hexadecimal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIColor+Hexadecimal.m"; sourceTree = ""; }; - F58A3EA21E66B6C70086E0EF /* Applications-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Applications-Prefix.pch"; sourceTree = ""; }; - F58A3EA41E66B6D70086E0EF /* Storyboard.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Storyboard.storyboard; sourceTree = ""; }; - F58A3EA61E66B6F10086E0EF /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - F58A3EA71E66B6F10086E0EF /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; F5BE15251E713E2100F6FBEA /* Colors.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Colors.app; sourceTree = BUILT_PRODUCTS_DIR; }; - F5BE15281E713E2100F6FBEA /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - F5BE152A1E713E2100F6FBEA /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - F5BE152B1E713E2100F6FBEA /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - F5BE15331E713E2100F6FBEA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - F5BE15361E713E2100F6FBEA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - F5BE15381E713E2100F6FBEA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - F5BE153C1E713E9300F6FBEA /* CollectionViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollectionViewController.h; sourceTree = ""; }; - F5BE153D1E713E9300F6FBEA /* CollectionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CollectionViewController.m; sourceTree = ""; }; - F5BE153F1E713E9300F6FBEA /* Color.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Color.h; sourceTree = ""; }; - F5BE15401E713E9300F6FBEA /* Color.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Color.m; sourceTree = ""; }; - F5BE15411E713E9300F6FBEA /* colors.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = colors.json; sourceTree = ""; }; - F5BE15421E713E9300F6FBEA /* Palette.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Palette.h; sourceTree = ""; }; - F5BE15431E713E9300F6FBEA /* Palette.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Palette.m; sourceTree = ""; }; - F5BE15441E713E9300F6FBEA /* UIColor+Hex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIColor+Hex.h"; sourceTree = ""; }; - F5BE15451E713E9300F6FBEA /* UIColor+Hex.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIColor+Hex.m"; sourceTree = ""; }; - F5BE15461E713E9300F6FBEA /* SearchViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchViewController.h; sourceTree = ""; }; - F5BE15471E713E9300F6FBEA /* SearchViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchViewController.m; sourceTree = ""; }; - F5BE15481E713E9300F6FBEA /* TableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableViewController.h; sourceTree = ""; }; - F5BE15491E713E9300F6FBEA /* TableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TableViewController.m; sourceTree = ""; }; - F5BE15511E713E9B00F6FBEA /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; - F5BE15551E713EC800F6FBEA /* Storyboard.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Storyboard.storyboard; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -143,7 +201,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F58A3EA91E66B7940086E0EF /* DZNEmptyDataSet.framework in Frameworks */, + E108711F21644A7C0023FC5E /* DZNEmptyDataSet.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -151,7 +209,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F5BE15571E71446300F6FBEA /* DZNEmptyDataSet.framework in Frameworks */, + E108712421644A9B0023FC5E /* DZNEmptyDataSet.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -175,161 +233,148 @@ name = Frameworks; sourceTree = ""; }; - F58A3E281E66AEE90086E0EF = { + E14E1D5C213E4F1B00647A29 /* Colors */ = { isa = PBXGroup; children = ( - F58A3E341E66AEE90086E0EF /* DZNEmptyDataSet */, - F58A3E3F1E66AEE90086E0EF /* DZNEmptyDataSetTests */, - F58A3E641E66B5410086E0EF /* Sample - Applications */, - F5BE15261E713E2100F6FBEA /* Sample - Colors */, - F58A3E331E66AEE90086E0EF /* Products */, - 242E9BB031D3264D62C731D6 /* Pods */, - A7CC5E0B0809CA256BDA9067 /* Frameworks */, + E14E1D65213E4F1B00647A29 /* AppDelegate.h */, + E14E1D70213E4F1B00647A29 /* AppDelegate.m */, + E14E1D68213E4F1B00647A29 /* Assets.xcassets */, + E14E1D67213E4F1B00647A29 /* CollectionViewController.h */, + E14E1D71213E4F1B00647A29 /* CollectionViewController.m */, + E14E1D5D213E4F1B00647A29 /* DataSource */, + E14E1D75213E4F1B00647A29 /* DetailViewController.h */, + E14E1D6A213E4F1B00647A29 /* DetailViewController.m */, + E18BE43E213FAB9C00D0AD21 /* FirstContainerController.h */, + E18BE43F213FAB9C00D0AD21 /* FirstContainerController.m */, + E14E1D73213E4F1B00647A29 /* Info.plist */, + E1DB652F214203BF0083EDBE /* NoColor.png */, + E14E1D6B213E4F1B00647A29 /* LaunchScreen.storyboard */, + E14E1D6F213E4F1B00647A29 /* main.m */, + E14E1D74213E4F1B00647A29 /* SearchViewController.h */, + E14E1D69213E4F1B00647A29 /* SearchViewController.m */, + E18BE441213FABCF00D0AD21 /* SecondContainerController.h */, + E18BE442213FABCF00D0AD21 /* SecondContainerController.m */, + E14E1D6D213E4F1B00647A29 /* Storyboard.storyboard */, + E14E1D66213E4F1B00647A29 /* TableViewController.h */, + E14E1D72213E4F1B00647A29 /* TableViewController.m */, ); + path = Colors; sourceTree = ""; }; - F58A3E331E66AEE90086E0EF /* Products */ = { + E14E1D5D213E4F1B00647A29 /* DataSource */ = { isa = PBXGroup; children = ( - F58A3E321E66AEE90086E0EF /* DZNEmptyDataSet.framework */, - F58A3E3B1E66AEE90086E0EF /* DZNEmptyDataSetTests.xctest */, - F58A3E631E66B5410086E0EF /* Applications.app */, - F5BE15251E713E2100F6FBEA /* Colors.app */, + E14E1D60213E4F1B00647A29 /* Color.h */, + E14E1D64213E4F1B00647A29 /* Color.m */, + E14E1D63213E4F1B00647A29 /* colors.json */, + E14E1D61213E4F1B00647A29 /* Palette.h */, + E14E1D5E213E4F1B00647A29 /* Palette.m */, + E14E1D62213E4F1B00647A29 /* UIColor+Hex.h */, + E14E1D5F213E4F1B00647A29 /* UIColor+Hex.m */, ); - name = Products; + path = DataSource; sourceTree = ""; }; - F58A3E341E66AEE90086E0EF /* DZNEmptyDataSet */ = { + E14E1D84213E4F2C00647A29 /* Applications */ = { isa = PBXGroup; children = ( - F58A3E351E66AEE90086E0EF /* DZNEmptyDataSet.h */, - F58A3E4C1E66AF400086E0EF /* UIScrollView+EmptyDataSet.h */, - F58A3E4D1E66AF400086E0EF /* UIScrollView+EmptyDataSet.m */, - F58A3E361E66AEE90086E0EF /* Info.plist */, + E14E1D89213E4F2C00647A29 /* AppDelegate.h */, + E14E1D94213E4F2C00647A29 /* AppDelegate.m */, + E14E1D8B213E4F2C00647A29 /* Assets.xcassets */, + E14E1D85213E4F2C00647A29 /* DataSource */, + E14E1D9C213E4F2C00647A29 /* DetailViewController.h */, + E14E1D8C213E4F2C00647A29 /* DetailViewController.m */, + E14E1D95213E4F2C00647A29 /* Fonts */, + E14E1D9B213E4F2C00647A29 /* Info.plist */, + E1DB652D2142009D0083EDBE /* NoApplication.png */, + E14E1D8D213E4F2C00647A29 /* LaunchScreen.storyboard */, + E14E1D92213E4F2C00647A29 /* main.m */, + E14E1D9A213E4F2C00647A29 /* MainViewController.h */, + E14E1D91213E4F2C00647A29 /* MainViewController.m */, + E14E1D8F213E4F2C00647A29 /* Storyboard.storyboard */, + E14E1D8A213E4F2C00647A29 /* UIColor+Hexadecimal.h */, + E14E1D93213E4F2C00647A29 /* UIColor+Hexadecimal.m */, ); - path = DZNEmptyDataSet; + path = Applications; sourceTree = ""; }; - F58A3E3F1E66AEE90086E0EF /* DZNEmptyDataSetTests */ = { + E14E1D85213E4F2C00647A29 /* DataSource */ = { isa = PBXGroup; children = ( - F58A3E401E66AEE90086E0EF /* ApplicationsSnapshotTests.m */, - F58A3E421E66AEE90086E0EF /* Info.plist */, + E14E1D86213E4F2C00647A29 /* Application.h */, + E14E1D88213E4F2C00647A29 /* Application.m */, + E14E1D87213E4F2C00647A29 /* applications.json */, ); - path = DZNEmptyDataSetTests; - sourceTree = ""; - }; - F58A3E641E66B5410086E0EF /* Sample - Applications */ = { - isa = PBXGroup; - children = ( - F58A3EA61E66B6F10086E0EF /* AppDelegate.h */, - F58A3EA71E66B6F10086E0EF /* AppDelegate.m */, - F58A3E871E66B62F0086E0EF /* MainViewController.h */, - F58A3E881E66B62F0086E0EF /* MainViewController.m */, - F58A3E801E66B62F0086E0EF /* DetailViewController.h */, - F58A3E811E66B62F0086E0EF /* DetailViewController.m */, - F58A3E7A1E66B62F0086E0EF /* Application.h */, - F58A3E7B1E66B62F0086E0EF /* Application.m */, - F58A3E911E66B62F0086E0EF /* UIColor+Hexadecimal.h */, - F58A3E921E66B62F0086E0EF /* UIColor+Hexadecimal.m */, - F58A3EA11E66B6970086E0EF /* Resources */, - F58A3E8A1E66B62F0086E0EF /* Supporting Files */, - ); - name = "Sample - Applications"; - path = Applications; + path = DataSource; sourceTree = ""; }; - F58A3E821E66B62F0086E0EF /* Fonts */ = { + E14E1D95213E4F2C00647A29 /* Fonts */ = { isa = PBXGroup; children = ( - F58A3E831E66B62F0086E0EF /* Ideal Sans */, - F58A3E851E66B62F0086E0EF /* Lato */, + E14E1D96213E4F2C00647A29 /* Ideal Sans */, + E14E1D98213E4F2C00647A29 /* Lato */, ); path = Fonts; sourceTree = ""; }; - F58A3E831E66B62F0086E0EF /* Ideal Sans */ = { + E14E1D96213E4F2C00647A29 /* Ideal Sans */ = { isa = PBXGroup; children = ( - F58A3E841E66B62F0086E0EF /* IdealSans-Book-Pro.otf */, + E14E1D97213E4F2C00647A29 /* IdealSans-Book-Pro.otf */, ); path = "Ideal Sans"; sourceTree = ""; }; - F58A3E851E66B62F0086E0EF /* Lato */ = { + E14E1D98213E4F2C00647A29 /* Lato */ = { isa = PBXGroup; children = ( - F58A3E861E66B62F0086E0EF /* Lato-Regular.ttf */, + E14E1D99213E4F2C00647A29 /* Lato-Regular.ttf */, ); path = Lato; sourceTree = ""; }; - F58A3E8A1E66B62F0086E0EF /* Supporting Files */ = { - isa = PBXGroup; - children = ( - F58A3EA41E66B6D70086E0EF /* Storyboard.storyboard */, - F58A3E8B1E66B62F0086E0EF /* LaunchScreen.storyboard */, - F58A3EA21E66B6C70086E0EF /* Applications-Prefix.pch */, - F58A3E8D1E66B62F0086E0EF /* InfoPlist.strings */, - F58A3E8F1E66B62F0086E0EF /* Info.plist */, - F58A3E901E66B62F0086E0EF /* main.m */, - ); - path = "Supporting Files"; - sourceTree = ""; - }; - F58A3EA11E66B6970086E0EF /* Resources */ = { + F58A3E281E66AEE90086E0EF = { isa = PBXGroup; children = ( - F58A3E7E1E66B62F0086E0EF /* applications.json */, - F58A3E821E66B62F0086E0EF /* Fonts */, - F58A3E7F1E66B62F0086E0EF /* Assets.xcassets */, + E14E1D84213E4F2C00647A29 /* Applications */, + E14E1D5C213E4F1B00647A29 /* Colors */, + F58A3E341E66AEE90086E0EF /* DZNEmptyDataSet */, + F58A3E3F1E66AEE90086E0EF /* DZNEmptyDataSetTests */, + F58A3E331E66AEE90086E0EF /* Products */, + 242E9BB031D3264D62C731D6 /* Pods */, + A7CC5E0B0809CA256BDA9067 /* Frameworks */, ); - name = Resources; sourceTree = ""; }; - F5BE15261E713E2100F6FBEA /* Sample - Colors */ = { + F58A3E331E66AEE90086E0EF /* Products */ = { isa = PBXGroup; children = ( - F5BE152A1E713E2100F6FBEA /* AppDelegate.h */, - F5BE152B1E713E2100F6FBEA /* AppDelegate.m */, - F5BE153C1E713E9300F6FBEA /* CollectionViewController.h */, - F5BE153D1E713E9300F6FBEA /* CollectionViewController.m */, - F5BE15461E713E9300F6FBEA /* SearchViewController.h */, - F5BE15471E713E9300F6FBEA /* SearchViewController.m */, - F5BE15481E713E9300F6FBEA /* TableViewController.h */, - F5BE15491E713E9300F6FBEA /* TableViewController.m */, - F5BE153E1E713E9300F6FBEA /* DataSource */, - F5BE15551E713EC800F6FBEA /* Storyboard.storyboard */, - F5BE15511E713E9B00F6FBEA /* Images.xcassets */, - F5BE15331E713E2100F6FBEA /* Assets.xcassets */, - F5BE15351E713E2100F6FBEA /* LaunchScreen.storyboard */, - F5BE15381E713E2100F6FBEA /* Info.plist */, - F5BE15271E713E2100F6FBEA /* Supporting Files */, - ); - name = "Sample - Colors"; - path = Colors; + F58A3E321E66AEE90086E0EF /* DZNEmptyDataSet.framework */, + F58A3E3B1E66AEE90086E0EF /* DZNEmptyDataSetTests.xctest */, + F58A3E631E66B5410086E0EF /* Applications.app */, + F5BE15251E713E2100F6FBEA /* Colors.app */, + ); + name = Products; sourceTree = ""; }; - F5BE15271E713E2100F6FBEA /* Supporting Files */ = { + F58A3E341E66AEE90086E0EF /* DZNEmptyDataSet */ = { isa = PBXGroup; children = ( - F5BE15281E713E2100F6FBEA /* main.m */, + F58A3E351E66AEE90086E0EF /* DZNEmptyDataSet.h */, + F58A3E4C1E66AF400086E0EF /* UIScrollView+EmptyDataSet.h */, + F58A3E4D1E66AF400086E0EF /* UIScrollView+EmptyDataSet.m */, + F58A3E361E66AEE90086E0EF /* Info.plist */, ); - name = "Supporting Files"; + path = DZNEmptyDataSet; sourceTree = ""; }; - F5BE153E1E713E9300F6FBEA /* DataSource */ = { + F58A3E3F1E66AEE90086E0EF /* DZNEmptyDataSetTests */ = { isa = PBXGroup; children = ( - F5BE15411E713E9300F6FBEA /* colors.json */, - F5BE153F1E713E9300F6FBEA /* Color.h */, - F5BE15401E713E9300F6FBEA /* Color.m */, - F5BE15421E713E9300F6FBEA /* Palette.h */, - F5BE15431E713E9300F6FBEA /* Palette.m */, - F5BE15441E713E9300F6FBEA /* UIColor+Hex.h */, - F5BE15451E713E9300F6FBEA /* UIColor+Hex.m */, + F58A3E401E66AEE90086E0EF /* ApplicationsSnapshotTests.m */, + F58A3E421E66AEE90086E0EF /* Info.plist */, ); - path = DataSource; + path = DZNEmptyDataSetTests; sourceTree = ""; }; /* End PBXGroup section */ @@ -339,7 +384,6 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - F58A3EA31E66B6C70086E0EF /* Applications-Prefix.pch in Headers */, F58A3E431E66AEE90086E0EF /* DZNEmptyDataSet.h in Headers */, F58A3E4E1E66AF400086E0EF /* UIScrollView+EmptyDataSet.h in Headers */, ); @@ -376,12 +420,13 @@ F58A3E391E66AEE90086E0EF /* Resources */, 41E8FAF2556733821B42B61F /* [CP] Embed Pods Frameworks */, C99FFA9F6DFE074B412088E9 /* [CP] Copy Pods Resources */, + E108712921644CBB0023FC5E /* CopyFiles */, ); buildRules = ( ); dependencies = ( + E1075A1D216451F10037C940 /* PBXTargetDependency */, F58A3E3E1E66AEE90086E0EF /* PBXTargetDependency */, - F5BE15201E713A7100F6FBEA /* PBXTargetDependency */, ); name = DZNEmptyDataSetTests; productName = DZNEmptyDataSetTests; @@ -395,10 +440,12 @@ F58A3E5F1E66B5410086E0EF /* Sources */, F58A3E601E66B5410086E0EF /* Frameworks */, F58A3E611E66B5410086E0EF /* Resources */, + E108712321644A7C0023FC5E /* Embed Frameworks */, ); buildRules = ( ); dependencies = ( + E108712221644A7C0023FC5E /* PBXTargetDependency */, ); name = Applications; productName = Applications; @@ -412,10 +459,12 @@ F5BE15211E713E2100F6FBEA /* Sources */, F5BE15221E713E2100F6FBEA /* Frameworks */, F5BE15231E713E2100F6FBEA /* Resources */, + E108712821644A9B0023FC5E /* Embed Frameworks */, ); buildRules = ( ); dependencies = ( + E108712721644A9B0023FC5E /* PBXTargetDependency */, ); name = Colors; productName = Colors; @@ -428,20 +477,20 @@ F58A3E291E66AEE90086E0EF /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0920; + LastUpgradeCheck = 1000; ORGANIZATIONNAME = DZN; TargetAttributes = { F58A3E311E66AEE90086E0EF = { CreatedOnToolsVersion = 8.2.1; - ProvisioningStyle = Manual; + ProvisioningStyle = Automatic; }; F58A3E3A1E66AEE90086E0EF = { CreatedOnToolsVersion = 8.2.1; - ProvisioningStyle = Manual; + ProvisioningStyle = Automatic; }; F58A3E621E66B5410086E0EF = { CreatedOnToolsVersion = 8.2.1; - ProvisioningStyle = Manual; + ProvisioningStyle = Automatic; }; F5BE15241E713E2100F6FBEA = { CreatedOnToolsVersion = 8.2.1; @@ -482,8 +531,8 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - F56CEC4B1E67430000E2FACA /* Assets.xcassets in Resources */, - F58A3EAA1E66BD5A0086E0EF /* applications.json in Resources */, + E1399753213F6ECD00689E6F /* Assets.xcassets in Resources */, + E1399752213F6EC300689E6F /* applications.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -491,12 +540,13 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - F58A3E951E66B62F0086E0EF /* applications.json in Resources */, - F58A3E961E66B62F0086E0EF /* Assets.xcassets in Resources */, - F58A3E991E66B62F0086E0EF /* Lato-Regular.ttf in Resources */, - F58A3E9C1E66B62F0086E0EF /* LaunchScreen.storyboard in Resources */, - F58A3E981E66B62F0086E0EF /* IdealSans-Book-Pro.otf in Resources */, - F58A3EA51E66B6D70086E0EF /* Storyboard.storyboard in Resources */, + E14E1DA1213E4F2C00647A29 /* LaunchScreen.storyboard in Resources */, + E14E1DA8213E4F2C00647A29 /* Lato-Regular.ttf in Resources */, + E14E1DA2213E4F2C00647A29 /* Storyboard.storyboard in Resources */, + E1DB652E2142009D0083EDBE /* NoApplication.png in Resources */, + E14E1D9F213E4F2C00647A29 /* Assets.xcassets in Resources */, + E14E1DA7213E4F2C00647A29 /* IdealSans-Book-Pro.otf in Resources */, + E14E1D9D213E4F2C00647A29 /* applications.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -504,11 +554,11 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - F5BE15371E713E2100F6FBEA /* LaunchScreen.storyboard in Resources */, - F5BE15521E713E9B00F6FBEA /* Images.xcassets in Resources */, - F5BE154C1E713E9300F6FBEA /* colors.json in Resources */, - F5BE15341E713E2100F6FBEA /* Assets.xcassets in Resources */, - F5BE15561E713EC800F6FBEA /* Storyboard.storyboard in Resources */, + E14E1D7D213E4F1B00647A29 /* LaunchScreen.storyboard in Resources */, + E1DB6530214203BF0083EDBE /* NoColor.png in Resources */, + E14E1D7E213E4F1B00647A29 /* Storyboard.storyboard in Resources */, + E14E1D7A213E4F1B00647A29 /* Assets.xcassets in Resources */, + E14E1D78213E4F1B00647A29 /* colors.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -575,10 +625,10 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - F58A3EAB1E66BD5D0086E0EF /* Application.m in Sources */, - F58A3EAD1E66BF270086E0EF /* UIColor+Hexadecimal.m in Sources */, + E1399751213F6EAB00689E6F /* DetailViewController.m in Sources */, + E1399750213F6E9A00689E6F /* Application.m in Sources */, + E139974F213F6E8A00689E6F /* UIColor+Hexadecimal.m in Sources */, F58A3E411E66AEE90086E0EF /* ApplicationsSnapshotTests.m in Sources */, - F58A3EAC1E66BD620086E0EF /* DetailViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -586,12 +636,12 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - F58A3E931E66B62F0086E0EF /* Application.m in Sources */, - F58A3E9A1E66B62F0086E0EF /* MainViewController.m in Sources */, - F58A3EA81E66B6F10086E0EF /* AppDelegate.m in Sources */, - F58A3EA01E66B62F0086E0EF /* UIColor+Hexadecimal.m in Sources */, - F58A3E9F1E66B62F0086E0EF /* main.m in Sources */, - F58A3E971E66B62F0086E0EF /* DetailViewController.m in Sources */, + E14E1D9E213E4F2C00647A29 /* Application.m in Sources */, + E14E1DA3213E4F2C00647A29 /* MainViewController.m in Sources */, + E14E1DA6213E4F2C00647A29 /* AppDelegate.m in Sources */, + E14E1DA5213E4F2C00647A29 /* UIColor+Hexadecimal.m in Sources */, + E14E1DA4213E4F2C00647A29 /* main.m in Sources */, + E14E1DA0213E4F2C00647A29 /* DetailViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -599,57 +649,78 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - F5BE154A1E713E9300F6FBEA /* CollectionViewController.m in Sources */, - F5BE154B1E713E9300F6FBEA /* Color.m in Sources */, - F5BE154D1E713E9300F6FBEA /* Palette.m in Sources */, - F5BE15501E713E9300F6FBEA /* TableViewController.m in Sources */, - F5BE154E1E713E9300F6FBEA /* UIColor+Hex.m in Sources */, - F5BE152C1E713E2100F6FBEA /* AppDelegate.m in Sources */, - F5BE154F1E713E9300F6FBEA /* SearchViewController.m in Sources */, - F5BE15291E713E2100F6FBEA /* main.m in Sources */, + E14E1D81213E4F1B00647A29 /* CollectionViewController.m in Sources */, + E14E1D7C213E4F1B00647A29 /* DetailViewController.m in Sources */, + E14E1D79213E4F1B00647A29 /* Color.m in Sources */, + E14E1D76213E4F1B00647A29 /* Palette.m in Sources */, + E18BE440213FAB9C00D0AD21 /* FirstContainerController.m in Sources */, + E14E1D82213E4F1B00647A29 /* TableViewController.m in Sources */, + E14E1D7B213E4F1B00647A29 /* SearchViewController.m in Sources */, + E14E1D7F213E4F1B00647A29 /* main.m in Sources */, + E18BE443213FABCF00D0AD21 /* SecondContainerController.m in Sources */, + E14E1D77213E4F1B00647A29 /* UIColor+Hex.m in Sources */, + E14E1D80213E4F1B00647A29 /* AppDelegate.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - F58A3E3E1E66AEE90086E0EF /* PBXTargetDependency */ = { + E1075A1D216451F10037C940 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = F58A3E621E66B5410086E0EF /* Applications */; + targetProxy = E1075A1C216451F10037C940 /* PBXContainerItemProxy */; + }; + E108712221644A7C0023FC5E /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = F58A3E311E66AEE90086E0EF /* DZNEmptyDataSet */; - targetProxy = F58A3E3D1E66AEE90086E0EF /* PBXContainerItemProxy */; + targetProxy = E108712121644A7C0023FC5E /* PBXContainerItemProxy */; }; - F5BE15201E713A7100F6FBEA /* PBXTargetDependency */ = { + E108712721644A9B0023FC5E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = F58A3E621E66B5410086E0EF /* Applications */; - targetProxy = F5BE151F1E713A7100F6FBEA /* PBXContainerItemProxy */; + target = F58A3E311E66AEE90086E0EF /* DZNEmptyDataSet */; + targetProxy = E108712621644A9B0023FC5E /* PBXContainerItemProxy */; + }; + F58A3E3E1E66AEE90086E0EF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = F58A3E311E66AEE90086E0EF /* DZNEmptyDataSet */; + targetProxy = F58A3E3D1E66AEE90086E0EF /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ - F58A3E8B1E66B62F0086E0EF /* LaunchScreen.storyboard */ = { + E14E1D6B213E4F1B00647A29 /* LaunchScreen.storyboard */ = { isa = PBXVariantGroup; children = ( - F58A3E8C1E66B62F0086E0EF /* Base */, + E14E1D6C213E4F1B00647A29 /* Base */, ); name = LaunchScreen.storyboard; sourceTree = ""; }; - F58A3E8D1E66B62F0086E0EF /* InfoPlist.strings */ = { + E14E1D6D213E4F1B00647A29 /* Storyboard.storyboard */ = { isa = PBXVariantGroup; children = ( - F58A3E8E1E66B62F0086E0EF /* en */, + E14E1D6E213E4F1B00647A29 /* Base */, ); - name = InfoPlist.strings; + name = Storyboard.storyboard; sourceTree = ""; }; - F5BE15351E713E2100F6FBEA /* LaunchScreen.storyboard */ = { + E14E1D8D213E4F2C00647A29 /* LaunchScreen.storyboard */ = { isa = PBXVariantGroup; children = ( - F5BE15361E713E2100F6FBEA /* Base */, + E14E1D8E213E4F2C00647A29 /* Base */, ); name = LaunchScreen.storyboard; sourceTree = ""; }; + E14E1D8F213E4F2C00647A29 /* Storyboard.storyboard */ = { + isa = PBXVariantGroup; + children = ( + E14E1D90213E4F2C00647A29 /* Base */, + ); + name = Storyboard.storyboard; + sourceTree = ""; + }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ @@ -666,6 +737,7 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -673,6 +745,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -700,7 +773,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -723,6 +796,7 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -730,6 +804,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -751,7 +826,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; @@ -764,7 +839,8 @@ F58A3E471E66AEE90086E0EF /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - CODE_SIGN_IDENTITY = ""; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; @@ -775,6 +851,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.dzn.DZNEmptyDataSet; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; }; name = Debug; @@ -782,7 +859,8 @@ F58A3E481E66AEE90086E0EF /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - CODE_SIGN_IDENTITY = ""; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; @@ -793,6 +871,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.dzn.DZNEmptyDataSet; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; }; name = Release; @@ -802,11 +881,14 @@ baseConfigurationReference = 52A7392318BDCC558DB8399F /* Pods-DZNEmptyDataSetTests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = DZNEmptyDataSetTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator"; PRODUCT_BUNDLE_IDENTIFIER = com.dzn.DZNEmptyDataSetTests; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; }; name = Debug; }; @@ -815,11 +897,14 @@ baseConfigurationReference = 273E51E5FA96821F8F582949 /* Pods-DZNEmptyDataSetTests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = DZNEmptyDataSetTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator"; PRODUCT_BUNDLE_IDENTIFIER = com.dzn.DZNEmptyDataSetTests; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; }; name = Release; }; @@ -827,13 +912,15 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "LaunchImage-3"; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = ""; - INFOPLIST_FILE = "$(SRCROOT)/Applications/Supporting Files/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + INFOPLIST_FILE = "$(SRCROOT)/Applications/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.dzn.Applications; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; }; name = Debug; }; @@ -841,13 +928,15 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "LaunchImage-3"; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = ""; - INFOPLIST_FILE = "$(SRCROOT)/Applications/Supporting Files/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + INFOPLIST_FILE = "$(SRCROOT)/Applications/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.dzn.Applications; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; }; name = Release; }; @@ -855,8 +944,9 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = Colors/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.dzn.Colors; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -867,8 +957,9 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = Colors/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.dzn.Colors; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/DZNEmptyDataSet/DZNEmptyDataSet.xcodeproj/xcshareddata/xcschemes/DZNEmptyDataSet.xcscheme b/DZNEmptyDataSet/DZNEmptyDataSet.xcodeproj/xcshareddata/xcschemes/DZNEmptyDataSet.xcscheme index 67b2997d..cd5f7e21 100644 --- a/DZNEmptyDataSet/DZNEmptyDataSet.xcodeproj/xcshareddata/xcschemes/DZNEmptyDataSet.xcscheme +++ b/DZNEmptyDataSet/DZNEmptyDataSet.xcodeproj/xcshareddata/xcschemes/DZNEmptyDataSet.xcscheme @@ -1,6 +1,6 @@ - - - - - - - - - - - - diff --git a/DZNEmptyDataSet/DZNEmptyDataSet.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/DZNEmptyDataSet/DZNEmptyDataSet.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/DZNEmptyDataSet/DZNEmptyDataSet.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ApplicationsSnapshotTests.m b/DZNEmptyDataSet/DZNEmptyDataSetTests/ApplicationsSnapshotTests.m index ae9dc62a..516a040a 100644 --- a/DZNEmptyDataSet/DZNEmptyDataSetTests/ApplicationsSnapshotTests.m +++ b/DZNEmptyDataSet/DZNEmptyDataSetTests/ApplicationsSnapshotTests.m @@ -23,14 +23,18 @@ - (void)setUp { self.recordMode = NO; // Snaphot tests are not yet configured to be running for multiple hardware configuration (device type, system version, screen density, etc.). - // We make sure tests are only ran for @2x iPhone simulators, with iOS 10 or above. + // We make sure tests are only ran for iPhone 8 simulator, with iOS 12 or compatible. static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ UIDevice *device = [UIDevice currentDevice]; UIScreen *screen = [UIScreen mainScreen]; - + CGFloat width = screen.bounds.size.width; + CGFloat height = screen.bounds.size.height; + CGFloat minLength = MIN(width,height); + CGFloat maxLength = MAX(width,height); // Using XCTAssert instead of NSAssert since these do not cause the tests to fail. XCTAssert([device.model containsString:@"iPhone"], @"Please run snapshot tests on an iPhone."); + XCTAssert((minLength==375)&&(maxLength==667), @"Please run snapshot tests on an iPhone 6, 6s, 7, or 8."); XCTAssert([device.systemVersion doubleValue] > 11.0, @"Please run snapshot tests on a simulator with iOS 11.0 or above."); XCTAssert(screen.scale == 2.0, @"Please run snapshot tests on a @2x density simulator."); }); @@ -65,6 +69,7 @@ - (NSString *)getReferenceImageDirectoryWithDefault:(NSString *)dir - (void)verifyView:(UIView *)view withIdentifier:(NSString *)identifier { + NSLog(@"%@", identifier); FBSnapshotVerifyViewWithOptions(view, identifier, FBSnapshotTestCaseDefaultSuffixes(), 0); } diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_500px@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_500px@2x.png index a4f7e84b..35ac6a8f 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_500px@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_500px@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Airbnb@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Airbnb@2x.png index a88f80f8..afd5fa87 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Airbnb@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Airbnb@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_AppStore@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_AppStore@2x.png index d4f49efd..a9704c8e 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_AppStore@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_AppStore@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Camera@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Camera@2x.png index ba75636c..a0df944f 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Camera@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Camera@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Dropbox@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Dropbox@2x.png index f5f4dffb..9041c573 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Dropbox@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Dropbox@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Facebook@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Facebook@2x.png index e656a028..f022e91e 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Facebook@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Facebook@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Fancy@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Fancy@2x.png index c4a00a37..1d8ead12 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Fancy@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Fancy@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Foursquare@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Foursquare@2x.png index a14cc73a..e0ee083f 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Foursquare@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Foursquare@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Instagram@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Instagram@2x.png index 5182bbb5..50c06751 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Instagram@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Instagram@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Kickstarter@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Kickstarter@2x.png index cc25a7d4..e0093776 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Kickstarter@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Kickstarter@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Path@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Path@2x.png index a804f2a2..4a63370f 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Path@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Path@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Photos@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Photos@2x.png index f43d18c8..6eb92515 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Photos@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Photos@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Pinterest@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Pinterest@2x.png index 690930cf..25d7ebfa 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Pinterest@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Pinterest@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Podcasts@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Podcasts@2x.png index 4267d286..1fe5190b 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Podcasts@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Podcasts@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Remote@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Remote@2x.png index 0fff79f8..077f114a 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Remote@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Remote@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Safari@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Safari@2x.png index 9b2a53dc..ce029d8c 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Safari@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Safari@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Slack@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Slack@2x.png index 97884afd..fbaf1fe4 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Slack@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Slack@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Tumblr@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Tumblr@2x.png index d3b387ef..2acaf212 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Tumblr@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Tumblr@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Twitter@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Twitter@2x.png index ef0072ca..10e21fbf 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Twitter@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Twitter@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Vesper@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Vesper@2x.png index 0b5c1e67..17cea4b6 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Vesper@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Vesper@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Videos@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Videos@2x.png index a754617b..12d4383c 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Videos@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Videos@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Vine@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Vine@2x.png index 084804dc..fa08861c 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Vine@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_Vine@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_WWDC@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_WWDC@2x.png index f6ad56eb..7b94b94a 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_WWDC@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_WWDC@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_WhatsApp@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_WhatsApp@2x.png index 1e4a19bb..be3ace3b 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_WhatsApp@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_WhatsApp@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_iCloud@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_iCloud@2x.png index da291cec..adb3da76 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_iCloud@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_iCloud@2x.png differ diff --git a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_iTunes Connect@2x.png b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_iTunes Connect@2x.png index 97a0a9d2..a0779b4d 100644 Binary files a/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_iTunes Connect@2x.png and b/DZNEmptyDataSet/DZNEmptyDataSetTests/ReferenceImages_64/ApplicationsSnapshotTests/testApplicationEmptyDataSets_iTunes Connect@2x.png differ diff --git a/DZNEmptyDataSet/Podfile b/DZNEmptyDataSet/Podfile index ab6394d1..f7b4617d 100644 --- a/DZNEmptyDataSet/Podfile +++ b/DZNEmptyDataSet/Podfile @@ -1,21 +1,20 @@ -platform :ios, '8.0' +platform :ios, '9.0' use_frameworks! -inhibit_all_warnings! +# inhibit_all_warnings! workspace 'DZNEmptyDataSet.xcworkspace' target 'DZNEmptyDataSetTests' do project 'DZNEmptyDataSet.xcodeproj' - - pod 'FBSnapshotTestCase' + pod 'iOSSnapshotTestCase', '~> 4.0.0' end post_install do |installer_representation| installer_representation.pods_project.targets.each do |target| target.build_configurations.each do |config| - # Forces all pods to be configured against Swift 3.0 - config.build_settings['SWIFT_VERSION'] = '3.0' + # Forces all pods to be configured against Swift 4.0 + config.build_settings['SWIFT_VERSION'] = '4.0' end end end diff --git a/DZNEmptyDataSet/Podfile.lock b/DZNEmptyDataSet/Podfile.lock index 61f95a3c..55e3ff1b 100644 --- a/DZNEmptyDataSet/Podfile.lock +++ b/DZNEmptyDataSet/Podfile.lock @@ -1,16 +1,16 @@ PODS: - - FBSnapshotTestCase (2.1.4): - - FBSnapshotTestCase/SwiftSupport (= 2.1.4) - - FBSnapshotTestCase/Core (2.1.4) - - FBSnapshotTestCase/SwiftSupport (2.1.4): - - FBSnapshotTestCase/Core + - iOSSnapshotTestCase (4.0.0): + - iOSSnapshotTestCase/SwiftSupport (= 4.0.0) + - iOSSnapshotTestCase/Core (4.0.0) + - iOSSnapshotTestCase/SwiftSupport (4.0.0): + - iOSSnapshotTestCase/Core DEPENDENCIES: - - FBSnapshotTestCase + - iOSSnapshotTestCase (~> 4.0.0) SPEC CHECKSUMS: - FBSnapshotTestCase: '094f9f314decbabe373b87cc339bea235a63e07a' + iOSSnapshotTestCase: 711379b19f69a22c131527df862352c877c2773c -PODFILE CHECKSUM: 23f23142a4039f5905874937cc9e8f0e7a21cad5 +PODFILE CHECKSUM: 7d5efd77852d0f48cbb5b4eebd5201dd245c8dd5 -COCOAPODS: 1.1.1 +COCOAPODS: 1.2.0 diff --git a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIApplication+StrictKeyWindow.h b/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIApplication+StrictKeyWindow.h deleted file mode 100644 index eefe11ba..00000000 --- a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIApplication+StrictKeyWindow.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) 2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -#import - -@interface UIApplication (StrictKeyWindow) - -/** - @return The receiver's @c keyWindow. Raises an assertion if @c nil. - */ -- (UIWindow *)fb_strictKeyWindow; - -@end diff --git a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIApplication+StrictKeyWindow.m b/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIApplication+StrictKeyWindow.m deleted file mode 100644 index 0f7a0c25..00000000 --- a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIApplication+StrictKeyWindow.m +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -#import - -@implementation UIApplication (StrictKeyWindow) - -- (UIWindow *)fb_strictKeyWindow -{ - UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow; - if (!keyWindow) { - [NSException raise:@"FBSnapshotTestCaseNilKeyWindowException" - format:@"Snapshot tests must be hosted by an application with a key window. Please ensure your test" - " host sets up a key window at launch (either via storyboards or programmatically) and doesn't" - " do anything to remove it while snapshot tests are running."]; - } - return keyWindow; -} - -@end diff --git a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.m b/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.m deleted file mode 100644 index c997f578..00000000 --- a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.m +++ /dev/null @@ -1,134 +0,0 @@ -// -// Created by Gabriel Handford on 3/1/09. -// Copyright 2009-2013. All rights reserved. -// Created by John Boiles on 10/20/11. -// Copyright (c) 2011. All rights reserved -// Modified by Felix Schulze on 2/11/13. -// Copyright 2013. All rights reserved. -// -// 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: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// 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. -// - -#import - -// This makes debugging much more fun -typedef union { - uint32_t raw; - unsigned char bytes[4]; - struct { - char red; - char green; - char blue; - char alpha; - } __attribute__ ((packed)) pixels; -} FBComparePixel; - -@implementation UIImage (Compare) - -- (BOOL)fb_compareWithImage:(UIImage *)image tolerance:(CGFloat)tolerance -{ - NSAssert(CGSizeEqualToSize(self.size, image.size), @"Images must be same size."); - - CGSize referenceImageSize = CGSizeMake(CGImageGetWidth(self.CGImage), CGImageGetHeight(self.CGImage)); - CGSize imageSize = CGSizeMake(CGImageGetWidth(image.CGImage), CGImageGetHeight(image.CGImage)); - - // The images have the equal size, so we could use the smallest amount of bytes because of byte padding - size_t minBytesPerRow = MIN(CGImageGetBytesPerRow(self.CGImage), CGImageGetBytesPerRow(image.CGImage)); - size_t referenceImageSizeBytes = referenceImageSize.height * minBytesPerRow; - void *referenceImagePixels = calloc(1, referenceImageSizeBytes); - void *imagePixels = calloc(1, referenceImageSizeBytes); - - if (!referenceImagePixels || !imagePixels) { - free(referenceImagePixels); - free(imagePixels); - return NO; - } - - CGContextRef referenceImageContext = CGBitmapContextCreate(referenceImagePixels, - referenceImageSize.width, - referenceImageSize.height, - CGImageGetBitsPerComponent(self.CGImage), - minBytesPerRow, - CGImageGetColorSpace(self.CGImage), - (CGBitmapInfo)kCGImageAlphaPremultipliedLast - ); - CGContextRef imageContext = CGBitmapContextCreate(imagePixels, - imageSize.width, - imageSize.height, - CGImageGetBitsPerComponent(image.CGImage), - minBytesPerRow, - CGImageGetColorSpace(image.CGImage), - (CGBitmapInfo)kCGImageAlphaPremultipliedLast - ); - - if (!referenceImageContext || !imageContext) { - CGContextRelease(referenceImageContext); - CGContextRelease(imageContext); - free(referenceImagePixels); - free(imagePixels); - return NO; - } - - CGContextDrawImage(referenceImageContext, CGRectMake(0, 0, referenceImageSize.width, referenceImageSize.height), self.CGImage); - CGContextDrawImage(imageContext, CGRectMake(0, 0, imageSize.width, imageSize.height), image.CGImage); - - CGContextRelease(referenceImageContext); - CGContextRelease(imageContext); - - BOOL imageEqual = YES; - - // Do a fast compare if we can - if (tolerance == 0) { - imageEqual = (memcmp(referenceImagePixels, imagePixels, referenceImageSizeBytes) == 0); - } else { - // Go through each pixel in turn and see if it is different - const NSInteger pixelCount = referenceImageSize.width * referenceImageSize.height; - - FBComparePixel *p1 = referenceImagePixels; - FBComparePixel *p2 = imagePixels; - - NSInteger numDiffPixels = 0; - for (int n = 0; n < pixelCount; ++n) { - // If this pixel is different, increment the pixel diff count and see - // if we have hit our limit. - if (p1->raw != p2->raw) { - numDiffPixels ++; - - CGFloat percent = (CGFloat)numDiffPixels / pixelCount; - if (percent > tolerance) { - imageEqual = NO; - break; - } - } - - p1++; - p2++; - } - } - - free(referenceImagePixels); - free(imagePixels); - - return imageEqual; -} - -@end diff --git a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.h b/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.h deleted file mode 100644 index b0d5b26b..00000000 --- a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -#import - -@interface UIImage (Snapshot) - -/// Uses renderInContext: to get a snapshot of the layer. -+ (UIImage *)fb_imageForLayer:(CALayer *)layer; - -/// Uses renderInContext: to get a snapshot of the view layer. -+ (UIImage *)fb_imageForViewLayer:(UIView *)view; - -/// Uses drawViewHierarchyInRect: to get a snapshot of the view and adds the view into a window if needed. -+ (UIImage *)fb_imageForView:(UIView *)view; - -@end diff --git a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.m b/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.m deleted file mode 100644 index 968091b9..00000000 --- a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.m +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -#import -#import - -@implementation UIImage (Snapshot) - -+ (UIImage *)fb_imageForLayer:(CALayer *)layer -{ - CGRect bounds = layer.bounds; - NSAssert1(CGRectGetWidth(bounds), @"Zero width for layer %@", layer); - NSAssert1(CGRectGetHeight(bounds), @"Zero height for layer %@", layer); - - UIGraphicsBeginImageContextWithOptions(bounds.size, NO, 0); - CGContextRef context = UIGraphicsGetCurrentContext(); - NSAssert1(context, @"Could not generate context for layer %@", layer); - CGContextSaveGState(context); - [layer layoutIfNeeded]; - [layer renderInContext:context]; - CGContextRestoreGState(context); - - UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext(); - UIGraphicsEndImageContext(); - return snapshot; -} - -+ (UIImage *)fb_imageForViewLayer:(UIView *)view -{ - [view layoutIfNeeded]; - return [self fb_imageForLayer:view.layer]; -} - -+ (UIImage *)fb_imageForView:(UIView *)view -{ - CGRect bounds = view.bounds; - NSAssert1(CGRectGetWidth(bounds), @"Zero width for view %@", view); - NSAssert1(CGRectGetHeight(bounds), @"Zero height for view %@", view); - - // If the input view is already a UIWindow, then just use that. Otherwise wrap in a window. - UIWindow *window = [view isKindOfClass:[UIWindow class]] ? (UIWindow *)view : view.window; - BOOL removeFromSuperview = NO; - if (!window) { - window = [[UIApplication sharedApplication] fb_strictKeyWindow]; - } - - if (!view.window && view != window) { - [window addSubview:view]; - removeFromSuperview = YES; - } - - UIGraphicsBeginImageContextWithOptions(bounds.size, NO, 0); - [view layoutIfNeeded]; - [view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES]; - - UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext(); - UIGraphicsEndImageContext(); - - if (removeFromSuperview) { - [view removeFromSuperview]; - } - - return snapshot; -} - -@end diff --git a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.m b/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.m deleted file mode 100644 index f44458ce..00000000 --- a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.m +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Copyright (c) 2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -#import -#import - -@implementation FBSnapshotTestCase -{ - FBSnapshotTestController *_snapshotController; -} - -#pragma mark - Overrides - -- (void)setUp -{ - [super setUp]; - _snapshotController = [[FBSnapshotTestController alloc] initWithTestName:NSStringFromClass([self class])]; -} - -- (void)tearDown -{ - _snapshotController = nil; - [super tearDown]; -} - -- (BOOL)recordMode -{ - return _snapshotController.recordMode; -} - -- (void)setRecordMode:(BOOL)recordMode -{ - NSAssert1(_snapshotController, @"%s cannot be called before [super setUp]", __FUNCTION__); - _snapshotController.recordMode = recordMode; -} - -- (BOOL)isDeviceAgnostic -{ - return _snapshotController.deviceAgnostic; -} - -- (void)setDeviceAgnostic:(BOOL)deviceAgnostic -{ - NSAssert1(_snapshotController, @"%s cannot be called before [super setUp]", __FUNCTION__); - _snapshotController.deviceAgnostic = deviceAgnostic; -} - -- (BOOL)usesDrawViewHierarchyInRect -{ - return _snapshotController.usesDrawViewHierarchyInRect; -} - -- (void)setUsesDrawViewHierarchyInRect:(BOOL)usesDrawViewHierarchyInRect -{ - NSAssert1(_snapshotController, @"%s cannot be called before [super setUp]", __FUNCTION__); - _snapshotController.usesDrawViewHierarchyInRect = usesDrawViewHierarchyInRect; -} - -#pragma mark - Public API - -- (NSString *)snapshotVerifyViewOrLayer:(id)viewOrLayer - identifier:(NSString *)identifier - suffixes:(NSOrderedSet *)suffixes - tolerance:(CGFloat)tolerance -{ - if (nil == viewOrLayer) { - return @"Object to be snapshotted must not be nil"; - } - NSString *referenceImageDirectory = [self getReferenceImageDirectoryWithDefault:(@ FB_REFERENCE_IMAGE_DIR)]; - if (referenceImageDirectory == nil) { - return @"Missing value for referenceImagesDirectory - Set FB_REFERENCE_IMAGE_DIR as Environment variable in your scheme."; - } - if (suffixes.count == 0) { - return [NSString stringWithFormat:@"Suffixes set cannot be empty %@", suffixes]; - } - - BOOL testSuccess = NO; - NSError *error = nil; - NSMutableArray *errors = [NSMutableArray array]; - - if (self.recordMode) { - NSString *referenceImagesDirectory = [NSString stringWithFormat:@"%@%@", referenceImageDirectory, suffixes.firstObject]; - BOOL referenceImageSaved = [self _compareSnapshotOfViewOrLayer:viewOrLayer referenceImagesDirectory:referenceImagesDirectory identifier:(identifier) tolerance:tolerance error:&error]; - if (!referenceImageSaved) { - [errors addObject:error]; - } - } else { - for (NSString *suffix in suffixes) { - NSString *referenceImagesDirectory = [NSString stringWithFormat:@"%@%@", referenceImageDirectory, suffix]; - BOOL referenceImageAvailable = [self referenceImageRecordedInDirectory:referenceImagesDirectory identifier:(identifier) error:&error]; - - if (referenceImageAvailable) { - BOOL comparisonSuccess = [self _compareSnapshotOfViewOrLayer:viewOrLayer referenceImagesDirectory:referenceImagesDirectory identifier:identifier tolerance:tolerance error:&error]; - [errors removeAllObjects]; - if (comparisonSuccess) { - testSuccess = YES; - break; - } else { - [errors addObject:error]; - } - } else { - [errors addObject:error]; - } - } - } - - if (!testSuccess) { - return [NSString stringWithFormat:@"Snapshot comparison failed: %@", errors.firstObject]; - } - if (self.recordMode) { - return @"Test ran in record mode. Reference image is now saved. Disable record mode to perform an actual snapshot comparison!"; - } - - return nil; -} - -- (BOOL)compareSnapshotOfLayer:(CALayer *)layer - referenceImagesDirectory:(NSString *)referenceImagesDirectory - identifier:(NSString *)identifier - tolerance:(CGFloat)tolerance - error:(NSError **)errorPtr -{ - return [self _compareSnapshotOfViewOrLayer:layer - referenceImagesDirectory:referenceImagesDirectory - identifier:identifier - tolerance:tolerance - error:errorPtr]; -} - -- (BOOL)compareSnapshotOfView:(UIView *)view - referenceImagesDirectory:(NSString *)referenceImagesDirectory - identifier:(NSString *)identifier - tolerance:(CGFloat)tolerance - error:(NSError **)errorPtr -{ - return [self _compareSnapshotOfViewOrLayer:view - referenceImagesDirectory:referenceImagesDirectory - identifier:identifier - tolerance:tolerance - error:errorPtr]; -} - -- (BOOL)referenceImageRecordedInDirectory:(NSString *)referenceImagesDirectory - identifier:(NSString *)identifier - error:(NSError **)errorPtr -{ - NSAssert1(_snapshotController, @"%s cannot be called before [super setUp]", __FUNCTION__); - _snapshotController.referenceImagesDirectory = referenceImagesDirectory; - UIImage *referenceImage = [_snapshotController referenceImageForSelector:self.invocation.selector - identifier:identifier - error:errorPtr]; - - return (referenceImage != nil); -} - -- (NSString *)getReferenceImageDirectoryWithDefault:(NSString *)dir -{ - NSString *envReferenceImageDirectory = [NSProcessInfo processInfo].environment[@"FB_REFERENCE_IMAGE_DIR"]; - if (envReferenceImageDirectory) { - return envReferenceImageDirectory; - } - if (dir && dir.length > 0) { - return dir; - } - return [[NSBundle bundleForClass:self.class].resourcePath stringByAppendingPathComponent:@"ReferenceImages"]; -} - - -#pragma mark - Private API - -- (BOOL)_compareSnapshotOfViewOrLayer:(id)viewOrLayer - referenceImagesDirectory:(NSString *)referenceImagesDirectory - identifier:(NSString *)identifier - tolerance:(CGFloat)tolerance - error:(NSError **)errorPtr -{ - _snapshotController.referenceImagesDirectory = referenceImagesDirectory; - return [_snapshotController compareSnapshotOfViewOrLayer:viewOrLayer - selector:self.invocation.selector - identifier:identifier - tolerance:tolerance - error:errorPtr]; -} - -@end diff --git a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h b/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h deleted file mode 100644 index e04acf2f..00000000 --- a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -#import - -#ifdef __cplusplus -extern "C" { -#endif - -/** - Returns a Boolean value that indicates whether the snapshot test is running in 64Bit. - This method is a convenience for creating the suffixes set based on the architecture - that the test is running. - - @returns @c YES if the test is running in 64bit, otherwise @c NO. - */ -BOOL FBSnapshotTestCaseIs64Bit(void); - -/** - Returns a default set of strings that is used to append a suffix based on the architectures. - @warning Do not modify this function, you can create your own and use it with @c FBSnapshotVerifyViewWithOptions() - - @returns An @c NSOrderedSet object containing strings that are appended to the reference images directory. - */ -NSOrderedSet *FBSnapshotTestCaseDefaultSuffixes(void); - -/** - Returns a fully «normalized» file name. - Strips punctuation and spaces and replaces them with @c _. Also appends the device model, running OS and screen size to the file name. - - @returns An @c NSString object containing the passed @c fileName with the device model, OS and screen size appended at the end. - */ -NSString *FBDeviceAgnosticNormalizedFileName(NSString *fileName); - -#ifdef __cplusplus -} -#endif diff --git a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.m b/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.m deleted file mode 100644 index d8709d8b..00000000 --- a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.m +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -#import -#import -#import - -BOOL FBSnapshotTestCaseIs64Bit(void) -{ -#if __LP64__ - return YES; -#else - return NO; -#endif -} - -NSOrderedSet *FBSnapshotTestCaseDefaultSuffixes(void) -{ - NSMutableOrderedSet *suffixesSet = [[NSMutableOrderedSet alloc] init]; - [suffixesSet addObject:@"_32"]; - [suffixesSet addObject:@"_64"]; - if (FBSnapshotTestCaseIs64Bit()) { - return [suffixesSet reversedOrderedSet]; - } - return [suffixesSet copy]; -} - -NSString *FBDeviceAgnosticNormalizedFileName(NSString *fileName) -{ - UIDevice *device = [UIDevice currentDevice]; - UIWindow *keyWindow = [[UIApplication sharedApplication] fb_strictKeyWindow]; - CGSize screenSize = keyWindow.bounds.size; - NSString *os = device.systemVersion; - - fileName = [NSString stringWithFormat:@"%@_%@%@_%.0fx%.0f", fileName, device.model, os, screenSize.width, screenSize.height]; - - NSMutableCharacterSet *invalidCharacters = [NSMutableCharacterSet new]; - [invalidCharacters formUnionWithCharacterSet:[NSCharacterSet whitespaceCharacterSet]]; - [invalidCharacters formUnionWithCharacterSet:[NSCharacterSet punctuationCharacterSet]]; - NSArray *validComponents = [fileName componentsSeparatedByCharactersInSet:invalidCharacters]; - fileName = [validComponents componentsJoinedByString:@"_"]; - - return fileName; -} \ No newline at end of file diff --git a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.m b/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.m deleted file mode 100644 index 74c5a0a6..00000000 --- a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.m +++ /dev/null @@ -1,358 +0,0 @@ -/* - * Copyright (c) 2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -#import -#import -#import -#import -#import - -#import - -NSString *const FBSnapshotTestControllerErrorDomain = @"FBSnapshotTestControllerErrorDomain"; -NSString *const FBReferenceImageFilePathKey = @"FBReferenceImageFilePathKey"; -NSString *const FBReferenceImageKey = @"FBReferenceImageKey"; -NSString *const FBCapturedImageKey = @"FBCapturedImageKey"; -NSString *const FBDiffedImageKey = @"FBDiffedImageKey"; - -typedef NS_ENUM(NSUInteger, FBTestSnapshotFileNameType) { - FBTestSnapshotFileNameTypeReference, - FBTestSnapshotFileNameTypeFailedReference, - FBTestSnapshotFileNameTypeFailedTest, - FBTestSnapshotFileNameTypeFailedTestDiff, -}; - -@implementation FBSnapshotTestController -{ - NSString *_testName; - NSFileManager *_fileManager; -} - -#pragma mark - Initializers - -- (instancetype)initWithTestClass:(Class)testClass; -{ - return [self initWithTestName:NSStringFromClass(testClass)]; -} - -- (instancetype)initWithTestName:(NSString *)testName -{ - if (self = [super init]) { - _testName = [testName copy]; - _deviceAgnostic = NO; - - _fileManager = [[NSFileManager alloc] init]; - } - return self; -} - -#pragma mark - Overrides - -- (NSString *)description -{ - return [NSString stringWithFormat:@"%@ %@", [super description], _referenceImagesDirectory]; -} - -#pragma mark - Public API - -- (BOOL)compareSnapshotOfLayer:(CALayer *)layer - selector:(SEL)selector - identifier:(NSString *)identifier - error:(NSError **)errorPtr -{ - return [self compareSnapshotOfViewOrLayer:layer - selector:selector - identifier:identifier - tolerance:0 - error:errorPtr]; -} - -- (BOOL)compareSnapshotOfView:(UIView *)view - selector:(SEL)selector - identifier:(NSString *)identifier - error:(NSError **)errorPtr -{ - return [self compareSnapshotOfViewOrLayer:view - selector:selector - identifier:identifier - tolerance:0 - error:errorPtr]; -} - -- (BOOL)compareSnapshotOfViewOrLayer:(id)viewOrLayer - selector:(SEL)selector - identifier:(NSString *)identifier - tolerance:(CGFloat)tolerance - error:(NSError **)errorPtr -{ - if (self.recordMode) { - return [self _recordSnapshotOfViewOrLayer:viewOrLayer selector:selector identifier:identifier error:errorPtr]; - } else { - return [self _performPixelComparisonWithViewOrLayer:viewOrLayer selector:selector identifier:identifier tolerance:tolerance error:errorPtr]; - } -} - -- (UIImage *)referenceImageForSelector:(SEL)selector - identifier:(NSString *)identifier - error:(NSError **)errorPtr -{ - NSString *filePath = [self _referenceFilePathForSelector:selector identifier:identifier]; - UIImage *image = [UIImage imageWithContentsOfFile:filePath]; - if (nil == image && NULL != errorPtr) { - BOOL exists = [_fileManager fileExistsAtPath:filePath]; - if (!exists) { - *errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain - code:FBSnapshotTestControllerErrorCodeNeedsRecord - userInfo:@{ - FBReferenceImageFilePathKey: filePath, - NSLocalizedDescriptionKey: @"Unable to load reference image.", - NSLocalizedFailureReasonErrorKey: @"Reference image not found. You need to run the test in record mode", - }]; - } else { - *errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain - code:FBSnapshotTestControllerErrorCodeUnknown - userInfo:nil]; - } - } - return image; -} - -- (BOOL)compareReferenceImage:(UIImage *)referenceImage - toImage:(UIImage *)image - tolerance:(CGFloat)tolerance - error:(NSError **)errorPtr -{ - BOOL sameImageDimensions = CGSizeEqualToSize(referenceImage.size, image.size); - if (sameImageDimensions && [referenceImage fb_compareWithImage:image tolerance:tolerance]) { - return YES; - } - - if (NULL != errorPtr) { - NSString *errorDescription = sameImageDimensions ? @"Images different" : @"Images different sizes"; - NSString *errorReason = sameImageDimensions ? [NSString stringWithFormat:@"image pixels differed by more than %.2f%% from the reference image", tolerance * 100] - : [NSString stringWithFormat:@"referenceImage:%@, image:%@", NSStringFromCGSize(referenceImage.size), NSStringFromCGSize(image.size)]; - FBSnapshotTestControllerErrorCode errorCode = sameImageDimensions ? FBSnapshotTestControllerErrorCodeImagesDifferent : FBSnapshotTestControllerErrorCodeImagesDifferentSizes; - - *errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain - code:errorCode - userInfo:@{ - NSLocalizedDescriptionKey: errorDescription, - NSLocalizedFailureReasonErrorKey: errorReason, - FBReferenceImageKey: referenceImage, - FBCapturedImageKey: image, - FBDiffedImageKey: [referenceImage fb_diffWithImage:image], - }]; - } - return NO; -} - -- (BOOL)saveFailedReferenceImage:(UIImage *)referenceImage - testImage:(UIImage *)testImage - selector:(SEL)selector - identifier:(NSString *)identifier - error:(NSError **)errorPtr -{ - NSData *referencePNGData = UIImagePNGRepresentation(referenceImage); - NSData *testPNGData = UIImagePNGRepresentation(testImage); - - NSString *referencePath = [self _failedFilePathForSelector:selector - identifier:identifier - fileNameType:FBTestSnapshotFileNameTypeFailedReference]; - - NSError *creationError = nil; - BOOL didCreateDir = [_fileManager createDirectoryAtPath:[referencePath stringByDeletingLastPathComponent] - withIntermediateDirectories:YES - attributes:nil - error:&creationError]; - if (!didCreateDir) { - if (NULL != errorPtr) { - *errorPtr = creationError; - } - return NO; - } - - if (![referencePNGData writeToFile:referencePath options:NSDataWritingAtomic error:errorPtr]) { - return NO; - } - - NSString *testPath = [self _failedFilePathForSelector:selector - identifier:identifier - fileNameType:FBTestSnapshotFileNameTypeFailedTest]; - - if (![testPNGData writeToFile:testPath options:NSDataWritingAtomic error:errorPtr]) { - return NO; - } - - NSString *diffPath = [self _failedFilePathForSelector:selector - identifier:identifier - fileNameType:FBTestSnapshotFileNameTypeFailedTestDiff]; - - UIImage *diffImage = [referenceImage fb_diffWithImage:testImage]; - NSData *diffImageData = UIImagePNGRepresentation(diffImage); - - if (![diffImageData writeToFile:diffPath options:NSDataWritingAtomic error:errorPtr]) { - return NO; - } - - NSLog(@"If you have Kaleidoscope installed you can run this command to see an image diff:\n" - @"ksdiff \"%@\" \"%@\"", referencePath, testPath); - - return YES; -} - -#pragma mark - Private API - -- (NSString *)_fileNameForSelector:(SEL)selector - identifier:(NSString *)identifier - fileNameType:(FBTestSnapshotFileNameType)fileNameType -{ - NSString *fileName = nil; - switch (fileNameType) { - case FBTestSnapshotFileNameTypeFailedReference: - fileName = @"reference_"; - break; - case FBTestSnapshotFileNameTypeFailedTest: - fileName = @"failed_"; - break; - case FBTestSnapshotFileNameTypeFailedTestDiff: - fileName = @"diff_"; - break; - default: - fileName = @""; - break; - } - fileName = [fileName stringByAppendingString:NSStringFromSelector(selector)]; - if (0 < identifier.length) { - fileName = [fileName stringByAppendingFormat:@"_%@", identifier]; - } - - if (self.isDeviceAgnostic) { - fileName = FBDeviceAgnosticNormalizedFileName(fileName); - } - - if ([[UIScreen mainScreen] scale] > 1) { - fileName = [fileName stringByAppendingFormat:@"@%.fx", [[UIScreen mainScreen] scale]]; - } - fileName = [fileName stringByAppendingPathExtension:@"png"]; - return fileName; -} - -- (NSString *)_referenceFilePathForSelector:(SEL)selector - identifier:(NSString *)identifier -{ - NSString *fileName = [self _fileNameForSelector:selector - identifier:identifier - fileNameType:FBTestSnapshotFileNameTypeReference]; - NSString *filePath = [_referenceImagesDirectory stringByAppendingPathComponent:_testName]; - filePath = [filePath stringByAppendingPathComponent:fileName]; - return filePath; -} - -- (NSString *)_failedFilePathForSelector:(SEL)selector - identifier:(NSString *)identifier - fileNameType:(FBTestSnapshotFileNameType)fileNameType -{ - NSString *fileName = [self _fileNameForSelector:selector - identifier:identifier - fileNameType:fileNameType]; - NSString *folderPath = NSTemporaryDirectory(); - if (getenv("IMAGE_DIFF_DIR")) { - folderPath = @(getenv("IMAGE_DIFF_DIR")); - } - NSString *filePath = [folderPath stringByAppendingPathComponent:_testName]; - filePath = [filePath stringByAppendingPathComponent:fileName]; - return filePath; -} - -- (BOOL)_performPixelComparisonWithViewOrLayer:(id)viewOrLayer - selector:(SEL)selector - identifier:(NSString *)identifier - tolerance:(CGFloat)tolerance - error:(NSError **)errorPtr -{ - UIImage *referenceImage = [self referenceImageForSelector:selector identifier:identifier error:errorPtr]; - if (nil != referenceImage) { - UIImage *snapshot = [self _imageForViewOrLayer:viewOrLayer]; - BOOL imagesSame = [self compareReferenceImage:referenceImage toImage:snapshot tolerance:tolerance error:errorPtr]; - if (!imagesSame) { - NSError *saveError = nil; - if ([self saveFailedReferenceImage:referenceImage testImage:snapshot selector:selector identifier:identifier error:&saveError] == NO) { - NSLog(@"Error saving test images: %@", saveError); - } - } - return imagesSame; - } - return NO; -} - -- (BOOL)_recordSnapshotOfViewOrLayer:(id)viewOrLayer - selector:(SEL)selector - identifier:(NSString *)identifier - error:(NSError **)errorPtr -{ - UIImage *snapshot = [self _imageForViewOrLayer:viewOrLayer]; - return [self _saveReferenceImage:snapshot selector:selector identifier:identifier error:errorPtr]; -} - -- (BOOL)_saveReferenceImage:(UIImage *)image - selector:(SEL)selector - identifier:(NSString *)identifier - error:(NSError **)errorPtr -{ - BOOL didWrite = NO; - if (nil != image) { - NSString *filePath = [self _referenceFilePathForSelector:selector identifier:identifier]; - NSData *pngData = UIImagePNGRepresentation(image); - if (nil != pngData) { - NSError *creationError = nil; - BOOL didCreateDir = [_fileManager createDirectoryAtPath:[filePath stringByDeletingLastPathComponent] - withIntermediateDirectories:YES - attributes:nil - error:&creationError]; - if (!didCreateDir) { - if (NULL != errorPtr) { - *errorPtr = creationError; - } - return NO; - } - didWrite = [pngData writeToFile:filePath options:NSDataWritingAtomic error:errorPtr]; - if (didWrite) { - NSLog(@"Reference image save at: %@", filePath); - } - } else { - if (nil != errorPtr) { - *errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain - code:FBSnapshotTestControllerErrorCodePNGCreationFailed - userInfo:@{ - FBReferenceImageFilePathKey: filePath, - }]; - } - } - } - return didWrite; -} - -- (UIImage *)_imageForViewOrLayer:(id)viewOrLayer -{ - if ([viewOrLayer isKindOfClass:[UIView class]]) { - if (_usesDrawViewHierarchyInRect) { - return [UIImage fb_imageForView:viewOrLayer]; - } else { - return [UIImage fb_imageForViewLayer:viewOrLayer]; - } - } else if ([viewOrLayer isKindOfClass:[CALayer class]]) { - return [UIImage fb_imageForLayer:viewOrLayer]; - } else { - [NSException raise:@"Only UIView and CALayer classes can be snapshotted" format:@"%@", viewOrLayer]; - } - return nil; -} - -@end diff --git a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/SwiftSupport.swift b/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/SwiftSupport.swift deleted file mode 100644 index 471bb0df..00000000 --- a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/SwiftSupport.swift +++ /dev/null @@ -1,125 +0,0 @@ -/* -* Copyright (c) 2015, Facebook, Inc. -* All rights reserved. -* -* This source code is licensed under the BSD-style license found in the -* LICENSE file in the root directory of this source tree. An additional grant -* of patent rights can be found in the PATENTS file in the same directory. -* -*/ - -#if swift(>=3) - public extension FBSnapshotTestCase { - public func FBSnapshotVerifyView(_ view: UIView, identifier: String = "", suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), tolerance: CGFloat = 0, file: StaticString = #file, line: UInt = #line) { - FBSnapshotVerifyViewOrLayer(view, identifier: identifier, suffixes: suffixes, tolerance: tolerance, file: file, line: line) - } - - public func FBSnapshotVerifyLayer(_ layer: CALayer, identifier: String = "", suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), tolerance: CGFloat = 0, file: StaticString = #file, line: UInt = #line) { - FBSnapshotVerifyViewOrLayer(layer, identifier: identifier, suffixes: suffixes, tolerance: tolerance, file: file, line: line) - } - - private func FBSnapshotVerifyViewOrLayer(_ viewOrLayer: AnyObject, identifier: String = "", suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), tolerance: CGFloat = 0, file: StaticString = #file, line: UInt = #line) { - let envReferenceImageDirectory = self.getReferenceImageDirectory(withDefault: FB_REFERENCE_IMAGE_DIR) - var error: NSError? - var comparisonSuccess = false - - if let envReferenceImageDirectory = envReferenceImageDirectory { - for suffix in suffixes { - let referenceImagesDirectory = "\(envReferenceImageDirectory)\(suffix)" - if viewOrLayer.isKind(of: UIView.self) { - do { - try compareSnapshot(of: viewOrLayer as! UIView, referenceImagesDirectory: referenceImagesDirectory, identifier: identifier, tolerance: tolerance) - comparisonSuccess = true - } catch let error1 as NSError { - error = error1 - comparisonSuccess = false - } - } else if viewOrLayer.isKind(of: CALayer.self) { - do { - try compareSnapshot(of: viewOrLayer as! CALayer, referenceImagesDirectory: referenceImagesDirectory, identifier: identifier, tolerance: tolerance) - comparisonSuccess = true - } catch let error1 as NSError { - error = error1 - comparisonSuccess = false - } - } else { - assertionFailure("Only UIView and CALayer classes can be snapshotted") - } - - assert(recordMode == false, message: "Test ran in record mode. Reference image is now saved. Disable record mode to perform an actual snapshot comparison!", file: file, line: line) - - if comparisonSuccess || recordMode { - break - } - - assert(comparisonSuccess, message: "Snapshot comparison failed: \(error)", file: file, line: line) - } - } else { - XCTFail("Missing value for referenceImagesDirectory - Set FB_REFERENCE_IMAGE_DIR as Environment variable in your scheme.") - } - } - - func assert(_ assertion: Bool, message: String, file: StaticString, line: UInt) { - if !assertion { - XCTFail(message, file: file, line: line) - } - } - } -#else -public extension FBSnapshotTestCase { - public func FBSnapshotVerifyView(view: UIView, identifier: String = "", suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), tolerance: CGFloat = 0, file: StaticString = #file, line: UInt = #line) { - FBSnapshotVerifyViewOrLayer(view, identifier: identifier, suffixes: suffixes, tolerance: tolerance, file: file, line: line) - } - - public func FBSnapshotVerifyLayer(layer: CALayer, identifier: String = "", suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), tolerance: CGFloat = 0, file: StaticString = #file, line: UInt = #line) { - FBSnapshotVerifyViewOrLayer(layer, identifier: identifier, suffixes: suffixes, tolerance: tolerance, file: file, line: line) - } - - private func FBSnapshotVerifyViewOrLayer(viewOrLayer: AnyObject, identifier: String = "", suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), tolerance: CGFloat = 0, file: StaticString = #file, line: UInt = #line) { - let envReferenceImageDirectory = self.getReferenceImageDirectoryWithDefault(FB_REFERENCE_IMAGE_DIR) - var error: NSError? - var comparisonSuccess = false - - if let envReferenceImageDirectory = envReferenceImageDirectory { - for suffix in suffixes { - let referenceImagesDirectory = "\(envReferenceImageDirectory)\(suffix)" - if viewOrLayer.isKindOfClass(UIView) { - do { - try compareSnapshotOfView(viewOrLayer as! UIView, referenceImagesDirectory: referenceImagesDirectory, identifier: identifier, tolerance: tolerance) - comparisonSuccess = true - } catch let error1 as NSError { - error = error1 - comparisonSuccess = false - } - } else if viewOrLayer.isKindOfClass(CALayer) { - do { - try compareSnapshotOfLayer(viewOrLayer as! CALayer, referenceImagesDirectory: referenceImagesDirectory, identifier: identifier, tolerance: tolerance) - comparisonSuccess = true - } catch let error1 as NSError { - error = error1 - comparisonSuccess = false - } - } else { - assertionFailure("Only UIView and CALayer classes can be snapshotted") - } - - assert(recordMode == false, message: "Test ran in record mode. Reference image is now saved. Disable record mode to perform an actual snapshot comparison!", file: file, line: line) - - if comparisonSuccess || recordMode { - break - } - - assert(comparisonSuccess, message: "Snapshot comparison failed: \(error)", file: file, line: line) - } - } else { - XCTFail("Missing value for referenceImagesDirectory - Set FB_REFERENCE_IMAGE_DIR as Environment variable in your scheme.") - } - } - - func assert(assertion: Bool, message: String, file: StaticString, line: UInt) { - if !assertion { - XCTFail(message, file: file, line: line) - } - } -} -#endif diff --git a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/LICENSE b/DZNEmptyDataSet/Pods/FBSnapshotTestCase/LICENSE deleted file mode 100644 index 2dd780cb..00000000 --- a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD License - -For the FBSnapshotTestCase software - -Copyright (c) 2013, Facebook, Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name Facebook nor the names of its contributors may be used to - endorse or promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/DZNEmptyDataSet/Pods/Manifest.lock b/DZNEmptyDataSet/Pods/Manifest.lock index 61f95a3c..55e3ff1b 100644 --- a/DZNEmptyDataSet/Pods/Manifest.lock +++ b/DZNEmptyDataSet/Pods/Manifest.lock @@ -1,16 +1,16 @@ PODS: - - FBSnapshotTestCase (2.1.4): - - FBSnapshotTestCase/SwiftSupport (= 2.1.4) - - FBSnapshotTestCase/Core (2.1.4) - - FBSnapshotTestCase/SwiftSupport (2.1.4): - - FBSnapshotTestCase/Core + - iOSSnapshotTestCase (4.0.0): + - iOSSnapshotTestCase/SwiftSupport (= 4.0.0) + - iOSSnapshotTestCase/Core (4.0.0) + - iOSSnapshotTestCase/SwiftSupport (4.0.0): + - iOSSnapshotTestCase/Core DEPENDENCIES: - - FBSnapshotTestCase + - iOSSnapshotTestCase (~> 4.0.0) SPEC CHECKSUMS: - FBSnapshotTestCase: '094f9f314decbabe373b87cc339bea235a63e07a' + iOSSnapshotTestCase: 711379b19f69a22c131527df862352c877c2773c -PODFILE CHECKSUM: 23f23142a4039f5905874937cc9e8f0e7a21cad5 +PODFILE CHECKSUM: 7d5efd77852d0f48cbb5b4eebd5201dd245c8dd5 -COCOAPODS: 1.1.1 +COCOAPODS: 1.2.0 diff --git a/DZNEmptyDataSet/Pods/Pods.xcodeproj/project.pbxproj b/DZNEmptyDataSet/Pods/Pods.xcodeproj/project.pbxproj index 883fa489..1775e578 100644 --- a/DZNEmptyDataSet/Pods/Pods.xcodeproj/project.pbxproj +++ b/DZNEmptyDataSet/Pods/Pods.xcodeproj/project.pbxproj @@ -7,145 +7,154 @@ objects = { /* Begin PBXBuildFile section */ - 051A816D6DD0CAE13496DDCFE0829167 /* UIImage+Diff.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E250EF19C5B5671AEC10BEB508D087 /* UIImage+Diff.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 0B8DBAB184BB7E8E1D9C5E3386A8DEDB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA75099E263FEEEAC4EABC8DDDC7FEE0 /* Foundation.framework */; }; - 1B9CD9B6D735874DB6B698EBA615EA6B /* UIImage+Compare.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B5E22F9517F21D3A0251F88FCAB281E /* UIImage+Compare.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2F485B69F51E4F723A38410F31F08550 /* FBSnapshotTestController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1374B79237CAC07693E99442FBED1F15 /* FBSnapshotTestController.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3B83A2F08BC090A6FD3EBA869E1BD39D /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 41342C8431DAAFD900CDBA3C3B840CBB /* QuartzCore.framework */; }; - 421CDD701AEE0F2458A84200366CDD0F /* UIImage+Snapshot.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B161931541BFE46DFEA2092EDDDA815 /* UIImage+Snapshot.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 56714A3A615A3F2DBA4CC98EE8254200 /* Pods-DZNEmptyDataSetTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D2C5DE8C818D9F1E47A3EFEB3B141910 /* Pods-DZNEmptyDataSetTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5F65495211297994220A8D081EAEFE15 /* SwiftSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = D97545C39C4A5EE2631DD9FFECE76A40 /* SwiftSupport.swift */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 61100C0E6FB329EE38659B3E5A1B7090 /* UIApplication+StrictKeyWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 2EECE81A9AEC1ED1057A9C3C88DBCEBE /* UIApplication+StrictKeyWindow.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 640776F175B648FBC2E43C16ECF3F39B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E496C2E8F5310CCD9757EFC3961482B /* UIKit.framework */; }; - 66DB0E9CC5F9B9AE2F11D99CBE8DBCA3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA75099E263FEEEAC4EABC8DDDC7FEE0 /* Foundation.framework */; }; - 6FAB5298272C4B4E26438CF8C9F14BA4 /* UIImage+Snapshot.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DBFBDCC891B770A2AC9EF0FB164B751 /* UIImage+Snapshot.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7408D9BD00535B58DA91AF916EE58641 /* UIImage+Diff.m in Sources */ = {isa = PBXBuildFile; fileRef = B9CEF7D6C5E08AB80E58DABC75D882BC /* UIImage+Diff.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7F97C4BCF71877056A7829143E78F33B /* FBSnapshotTestCasePlatform.m in Sources */ = {isa = PBXBuildFile; fileRef = 58A2557E7CE20AACCD1B28B1CD1F920D /* FBSnapshotTestCasePlatform.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 9673CF780F48C8E4EC2A331717B1F67C /* FBSnapshotTestCase.h in Headers */ = {isa = PBXBuildFile; fileRef = E37899BD4B349060AA147E2A3721D3A2 /* FBSnapshotTestCase.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B758FB09FE2C06C1B8E36A71A9D76D41 /* FBSnapshotTestCase-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 73D037B3C804B9E1BB70538E342E5104 /* FBSnapshotTestCase-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BC952FC04FC963C1294DCD619C9B6B3B /* UIApplication+StrictKeyWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = B9109B8B333B5A1A3E92EFC09EDC10AC /* UIApplication+StrictKeyWindow.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BFCE460CC33E8872B7156D4166340178 /* FBSnapshotTestCasePlatform.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E3DB4D092B985E76E227F7F313C6981 /* FBSnapshotTestCasePlatform.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C0D0EBCEBAD879ADDC3CFC9E5A2106B6 /* Pods-DZNEmptyDataSetTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2711A4ADEA10C0A0543D8E7180EEFC68 /* Pods-DZNEmptyDataSetTests-dummy.m */; }; - CAFA5E486BCE117A7D8C0FBF9DA6666B /* UIImage+Compare.h in Headers */ = {isa = PBXBuildFile; fileRef = 432938111B6FF0189EFFEDF2F845B308 /* UIImage+Compare.h */; settings = {ATTRIBUTES = (Private, ); }; }; - D097F3914F8E2EA14FB7C88FA3099F26 /* FBSnapshotTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 39577E2B806B8B2D019998DE60728F63 /* FBSnapshotTestCase.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D32332CA40D4F631E8DBA950B25A18FA /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C32099E0A716483F90035D502A494AC /* XCTest.framework */; }; - E9D5EF482949E65F0E84B0810721CFBF /* FBSnapshotTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = 052258A488A96C35531FAC73C4F42924 /* FBSnapshotTestController.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F33986F4969B4F178AF9EB568FE8B1AA /* FBSnapshotTestCase-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 52C18C0EB1FED5EB5CE3B0E768AC510F /* FBSnapshotTestCase-dummy.m */; }; + 0A21482B840E435BD920CFDA8CBA7058 /* SwiftSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE05CEDCC94943B72EF7FED9A71E3337 /* SwiftSupport.swift */; }; + 1A5A6E183160B640DF814E2CC25B6937 /* FBSnapshotTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = CD72CFD979F343D37CB387971F514B01 /* FBSnapshotTestController.m */; }; + 29FF55B7B09815A5389D3BBD129E4473 /* iOSSnapshotTestCase-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D75D1D209CD3519A7ED75708A53731AC /* iOSSnapshotTestCase-dummy.m */; }; + 2CCCDE011307A4929FDAD3DA0FEF4135 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C32099E0A716483F90035D502A494AC /* XCTest.framework */; }; + 30FC8B30CE5CAFE5E90D8AE7261AE5D4 /* iOSSnapshotTestCase-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C06DB657AB1E8FF9A66D369DE9B0241 /* iOSSnapshotTestCase-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 32A55AE0DD706E7BC8F18CA6B21505B3 /* FBSnapshotTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 6462F24C3105950F66A5DF1F0A12E98B /* FBSnapshotTestCase.m */; }; + 36BB247B998DA0921FCFA03D8B269A14 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 41342C8431DAAFD900CDBA3C3B840CBB /* QuartzCore.framework */; }; + 378EEE0B1A986D3F82344A8E1F9961EB /* UIImage+Snapshot.m in Sources */ = {isa = PBXBuildFile; fileRef = B27E856B69CEA127575B3CE2F297224F /* UIImage+Snapshot.m */; }; + 4C9D350DB2A8F0727E7CE4D79192AC55 /* FBSnapshotTestCasePlatform.h in Headers */ = {isa = PBXBuildFile; fileRef = B63A46EB407C0A5960C6AA0C29BA2CEE /* FBSnapshotTestCasePlatform.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4CBE669E5155E026F74732CBB0E77362 /* UIImage+Compare.m in Sources */ = {isa = PBXBuildFile; fileRef = CA462AF44B6E1F01BC448A33FBA48F04 /* UIImage+Compare.m */; }; + 774A420FCFA15B67B466C60405F5084C /* FBSnapshotTestCase.h in Headers */ = {isa = PBXBuildFile; fileRef = FA93DD32367181582259A0BF4AF2C0D7 /* FBSnapshotTestCase.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 79F8DA087C92A87D097EC073BE7DE7E3 /* UIImage+Diff.h in Headers */ = {isa = PBXBuildFile; fileRef = 705BA72351A95278B19D57FBFD089DFC /* UIImage+Diff.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 7A5FC1B55B42A907E401D4C59A32EBEF /* UIImage+Compare.h in Headers */ = {isa = PBXBuildFile; fileRef = DF36DAF810A4891871D88EC736F16A7D /* UIImage+Compare.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 8AE3CAC681FC05FB5437E78613972BD8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA75099E263FEEEAC4EABC8DDDC7FEE0 /* Foundation.framework */; }; + 94AF4A61AC2B9EDA3A1451740747B45E /* FBSnapshotTestCasePlatform.m in Sources */ = {isa = PBXBuildFile; fileRef = 387A6D96DB403759A67B281B55AE83D4 /* FBSnapshotTestCasePlatform.m */; }; + 94F3DD798E7E51E7F303CFAA4464C2F2 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E496C2E8F5310CCD9757EFC3961482B /* UIKit.framework */; }; + A8FC62BD98C8E89EDCB69E528F531DB2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA75099E263FEEEAC4EABC8DDDC7FEE0 /* Foundation.framework */; }; + B6EE380A20E764D912CF7CF9DDCCA9BA /* UIImage+Diff.m in Sources */ = {isa = PBXBuildFile; fileRef = C23E2EEB5492EDEF09E04FA32A1CCC45 /* UIImage+Diff.m */; }; + CDD5625A77094A45BABC524EC3516C4F /* Pods-DZNEmptyDataSetTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D2C5DE8C818D9F1E47A3EFEB3B141910 /* Pods-DZNEmptyDataSetTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D90EE23157EF1E2B029149E2ABCDDED4 /* UIImage+Snapshot.h in Headers */ = {isa = PBXBuildFile; fileRef = D16195EDEF3FA143C0A303E63E0BCD18 /* UIImage+Snapshot.h */; settings = {ATTRIBUTES = (Private, ); }; }; + DD1194FD31222C55B4CF6026A13C55A5 /* Pods-DZNEmptyDataSetTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2711A4ADEA10C0A0543D8E7180EEFC68 /* Pods-DZNEmptyDataSetTests-dummy.m */; }; + E5A23E9758FEED86555B3C62F1138C01 /* FBSnapshotTestController.h in Headers */ = {isa = PBXBuildFile; fileRef = D94F7F72C0A8169FAEC9850E79D05F93 /* FBSnapshotTestController.h */; settings = {ATTRIBUTES = (Public, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 137CED399020A4C91F6D16D350EC19DC /* PBXContainerItemProxy */ = { + DE3B6FBE18A19B7BEA0A12B325959AC3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 34CD2E3428AB802BACA62286FF5074B1; - remoteInfo = FBSnapshotTestCase; + remoteGlobalIDString = BFC6DB46D0F2DC7150A42264441BA14D; + remoteInfo = iOSSnapshotTestCase; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ 003550A8A1F6582EAFC89EC244F876C2 /* Pods-DZNEmptyDataSetTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-DZNEmptyDataSetTests-acknowledgements.plist"; sourceTree = ""; }; 0346C76CC39DC036BE67AB6CA8D034CC /* Pods-DZNEmptyDataSetTests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-DZNEmptyDataSetTests-resources.sh"; sourceTree = ""; }; - 052258A488A96C35531FAC73C4F42924 /* FBSnapshotTestController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSnapshotTestController.m; path = FBSnapshotTestCase/FBSnapshotTestController.m; sourceTree = ""; }; - 0B161931541BFE46DFEA2092EDDDA815 /* UIImage+Snapshot.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Snapshot.h"; path = "FBSnapshotTestCase/Categories/UIImage+Snapshot.h"; sourceTree = ""; }; 0E496C2E8F5310CCD9757EFC3961482B /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; 0FB967BB2DBBA7964F67D02B3EF564E4 /* Pods-DZNEmptyDataSetTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-DZNEmptyDataSetTests-acknowledgements.markdown"; sourceTree = ""; }; - 1374B79237CAC07693E99442FBED1F15 /* FBSnapshotTestController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSnapshotTestController.h; path = FBSnapshotTestCase/FBSnapshotTestController.h; sourceTree = ""; }; 203C357C2053664409B6F57E85862F88 /* Pods-DZNEmptyDataSetTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DZNEmptyDataSetTests.release.xcconfig"; sourceTree = ""; }; 2711A4ADEA10C0A0543D8E7180EEFC68 /* Pods-DZNEmptyDataSetTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-DZNEmptyDataSetTests-dummy.m"; sourceTree = ""; }; 276828F37C5435E18CE11B14B199B707 /* Pods-DZNEmptyDataSetTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-DZNEmptyDataSetTests-frameworks.sh"; sourceTree = ""; }; - 2EECE81A9AEC1ED1057A9C3C88DBCEBE /* UIApplication+StrictKeyWindow.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIApplication+StrictKeyWindow.m"; path = "FBSnapshotTestCase/Categories/UIApplication+StrictKeyWindow.m"; sourceTree = ""; }; - 39577E2B806B8B2D019998DE60728F63 /* FBSnapshotTestCase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSnapshotTestCase.m; path = FBSnapshotTestCase/FBSnapshotTestCase.m; sourceTree = ""; }; - 3B5E22F9517F21D3A0251F88FCAB281E /* UIImage+Compare.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Compare.m"; path = "FBSnapshotTestCase/Categories/UIImage+Compare.m"; sourceTree = ""; }; + 38761B7C4306AF333DD60A0DFCD5EACA /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 387A6D96DB403759A67B281B55AE83D4 /* FBSnapshotTestCasePlatform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSnapshotTestCasePlatform.m; path = FBSnapshotTestCase/FBSnapshotTestCasePlatform.m; sourceTree = ""; }; 3C32099E0A716483F90035D502A494AC /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; - 3DBFBDCC891B770A2AC9EF0FB164B751 /* UIImage+Snapshot.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Snapshot.m"; path = "FBSnapshotTestCase/Categories/UIImage+Snapshot.m"; sourceTree = ""; }; + 3DAB7D50A686BC39D47014339C46EAAE /* FBSnapshotTestCase.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = FBSnapshotTestCase.framework; path = iOSSnapshotTestCase.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 41342C8431DAAFD900CDBA3C3B840CBB /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - 432938111B6FF0189EFFEDF2F845B308 /* UIImage+Compare.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Compare.h"; path = "FBSnapshotTestCase/Categories/UIImage+Compare.h"; sourceTree = ""; }; - 52C18C0EB1FED5EB5CE3B0E768AC510F /* FBSnapshotTestCase-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBSnapshotTestCase-dummy.m"; sourceTree = ""; }; - 58A2557E7CE20AACCD1B28B1CD1F920D /* FBSnapshotTestCasePlatform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSnapshotTestCasePlatform.m; path = FBSnapshotTestCase/FBSnapshotTestCasePlatform.m; sourceTree = ""; }; - 6E66B4218824CF8160D93713DDBEEA82 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 73D037B3C804B9E1BB70538E342E5104 /* FBSnapshotTestCase-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSnapshotTestCase-umbrella.h"; sourceTree = ""; }; - 7A51853ACE17A67243EB9CD454DC9DB7 /* Pods-DZNEmptyDataSetTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-DZNEmptyDataSetTests.modulemap"; sourceTree = ""; }; - 7E3DB4D092B985E76E227F7F313C6981 /* FBSnapshotTestCasePlatform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSnapshotTestCasePlatform.h; path = FBSnapshotTestCase/FBSnapshotTestCasePlatform.h; sourceTree = ""; }; - 823558E8AC8EB39D028DB5FBBEA227A3 /* FBSnapshotTestCase.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = FBSnapshotTestCase.modulemap; sourceTree = ""; }; + 42E9750D383AC69CE913DCEBBE9051C6 /* Pods_DZNEmptyDataSetTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_DZNEmptyDataSetTests.framework; path = "Pods-DZNEmptyDataSetTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 5C06DB657AB1E8FF9A66D369DE9B0241 /* iOSSnapshotTestCase-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "iOSSnapshotTestCase-umbrella.h"; sourceTree = ""; }; + 6462F24C3105950F66A5DF1F0A12E98B /* FBSnapshotTestCase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSnapshotTestCase.m; path = FBSnapshotTestCase/FBSnapshotTestCase.m; sourceTree = ""; }; + 705BA72351A95278B19D57FBFD089DFC /* UIImage+Diff.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Diff.h"; path = "FBSnapshotTestCase/Categories/UIImage+Diff.h"; sourceTree = ""; }; + 74D8FA8D7E60AAF327E5214A07C7454B /* iOSSnapshotTestCase-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "iOSSnapshotTestCase-prefix.pch"; sourceTree = ""; }; + 7A51853ACE17A67243EB9CD454DC9DB7 /* Pods-DZNEmptyDataSetTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-DZNEmptyDataSetTests.modulemap"; sourceTree = ""; }; 8295B27224E25509258C6D25C48E06EE /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 85E250EF19C5B5671AEC10BEB508D087 /* UIImage+Diff.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Diff.h"; path = "FBSnapshotTestCase/Categories/UIImage+Diff.h"; sourceTree = ""; }; - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 9D68DFDC26576427E59E9367858CEB62 /* iOSSnapshotTestCase.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = iOSSnapshotTestCase.xcconfig; sourceTree = ""; }; 9DB5C2C4D709B5098593FBE989824B59 /* Pods-DZNEmptyDataSetTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-DZNEmptyDataSetTests.debug.xcconfig"; sourceTree = ""; }; - B9109B8B333B5A1A3E92EFC09EDC10AC /* UIApplication+StrictKeyWindow.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIApplication+StrictKeyWindow.h"; path = "FBSnapshotTestCase/Categories/UIApplication+StrictKeyWindow.h"; sourceTree = ""; }; - B9CEF7D6C5E08AB80E58DABC75D882BC /* UIImage+Diff.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Diff.m"; path = "FBSnapshotTestCase/Categories/UIImage+Diff.m"; sourceTree = ""; }; - CC12BCFA3FC0B8C307F5B38C673EDD12 /* FBSnapshotTestCase-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBSnapshotTestCase-prefix.pch"; sourceTree = ""; }; + B27E856B69CEA127575B3CE2F297224F /* UIImage+Snapshot.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Snapshot.m"; path = "FBSnapshotTestCase/Categories/UIImage+Snapshot.m"; sourceTree = ""; }; + B63A46EB407C0A5960C6AA0C29BA2CEE /* FBSnapshotTestCasePlatform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSnapshotTestCasePlatform.h; path = FBSnapshotTestCase/FBSnapshotTestCasePlatform.h; sourceTree = ""; }; + C23E2EEB5492EDEF09E04FA32A1CCC45 /* UIImage+Diff.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Diff.m"; path = "FBSnapshotTestCase/Categories/UIImage+Diff.m"; sourceTree = ""; }; + CA462AF44B6E1F01BC448A33FBA48F04 /* UIImage+Compare.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Compare.m"; path = "FBSnapshotTestCase/Categories/UIImage+Compare.m"; sourceTree = ""; }; + CD72CFD979F343D37CB387971F514B01 /* FBSnapshotTestController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBSnapshotTestController.m; path = FBSnapshotTestCase/FBSnapshotTestController.m; sourceTree = ""; }; + CE05CEDCC94943B72EF7FED9A71E3337 /* SwiftSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftSupport.swift; path = FBSnapshotTestCase/SwiftSupport.swift; sourceTree = ""; }; + D16195EDEF3FA143C0A303E63E0BCD18 /* UIImage+Snapshot.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Snapshot.h"; path = "FBSnapshotTestCase/Categories/UIImage+Snapshot.h"; sourceTree = ""; }; + D238E03B80CFE29597331FF4273B9B8F /* iOSSnapshotTestCase.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = iOSSnapshotTestCase.modulemap; sourceTree = ""; }; D2C5DE8C818D9F1E47A3EFEB3B141910 /* Pods-DZNEmptyDataSetTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-DZNEmptyDataSetTests-umbrella.h"; sourceTree = ""; }; - D97545C39C4A5EE2631DD9FFECE76A40 /* SwiftSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftSupport.swift; path = FBSnapshotTestCase/SwiftSupport.swift; sourceTree = ""; }; - D986A0978615C7C0A2EEC879ABC903D6 /* Pods_DZNEmptyDataSetTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_DZNEmptyDataSetTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D75D1D209CD3519A7ED75708A53731AC /* iOSSnapshotTestCase-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "iOSSnapshotTestCase-dummy.m"; sourceTree = ""; }; + D94F7F72C0A8169FAEC9850E79D05F93 /* FBSnapshotTestController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSnapshotTestController.h; path = FBSnapshotTestCase/FBSnapshotTestController.h; sourceTree = ""; }; DA75099E263FEEEAC4EABC8DDDC7FEE0 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - DADAF30F2D84FDAAD2ADD2D50C1F40DF /* FBSnapshotTestCase.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBSnapshotTestCase.xcconfig; sourceTree = ""; }; - E37899BD4B349060AA147E2A3721D3A2 /* FBSnapshotTestCase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSnapshotTestCase.h; path = FBSnapshotTestCase/FBSnapshotTestCase.h; sourceTree = ""; }; - E3CAB65856BF4AC7B1D274D5DF0A8D0E /* FBSnapshotTestCase.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FBSnapshotTestCase.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DF36DAF810A4891871D88EC736F16A7D /* UIImage+Compare.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Compare.h"; path = "FBSnapshotTestCase/Categories/UIImage+Compare.h"; sourceTree = ""; }; + FA93DD32367181582259A0BF4AF2C0D7 /* FBSnapshotTestCase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBSnapshotTestCase.h; path = FBSnapshotTestCase/FBSnapshotTestCase.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 1D421A30A1BDB7E1C4216F64D0C939B1 /* Frameworks */ = { + 46D9BDE8342D451706A0D81F4AF10B89 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0B8DBAB184BB7E8E1D9C5E3386A8DEDB /* Foundation.framework in Frameworks */, - 3B83A2F08BC090A6FD3EBA869E1BD39D /* QuartzCore.framework in Frameworks */, - 640776F175B648FBC2E43C16ECF3F39B /* UIKit.framework in Frameworks */, - D32332CA40D4F631E8DBA950B25A18FA /* XCTest.framework in Frameworks */, + A8FC62BD98C8E89EDCB69E528F531DB2 /* Foundation.framework in Frameworks */, + 36BB247B998DA0921FCFA03D8B269A14 /* QuartzCore.framework in Frameworks */, + 94F3DD798E7E51E7F303CFAA4464C2F2 /* UIKit.framework in Frameworks */, + 2CCCDE011307A4929FDAD3DA0FEF4135 /* XCTest.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 43F30C5735D7530C37ED8AF4346D3EEA /* Frameworks */ = { + C0C590C61D597580094074212CE6D431 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 66DB0E9CC5F9B9AE2F11D99CBE8DBCA3 /* Foundation.framework in Frameworks */, + 8AE3CAC681FC05FB5437E78613972BD8 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 14B8B9B15ECBE87983FF987239AB2D7B /* Frameworks */ = { + 032091FEE0217BC41BDBCF0E859700FD /* SwiftSupport */ = { isa = PBXGroup; children = ( - F76C5E10C253876355FB231229C42226 /* iOS */, + CE05CEDCC94943B72EF7FED9A71E3337 /* SwiftSupport.swift */, ); - name = Frameworks; + name = SwiftSupport; sourceTree = ""; }; - 1549F91FCD089822594C1F5DB8AB9E8F /* Support Files */ = { + 05C07DDB5937D64286E80CDCA5239CFA /* Core */ = { isa = PBXGroup; children = ( - 823558E8AC8EB39D028DB5FBBEA227A3 /* FBSnapshotTestCase.modulemap */, - DADAF30F2D84FDAAD2ADD2D50C1F40DF /* FBSnapshotTestCase.xcconfig */, - 52C18C0EB1FED5EB5CE3B0E768AC510F /* FBSnapshotTestCase-dummy.m */, - CC12BCFA3FC0B8C307F5B38C673EDD12 /* FBSnapshotTestCase-prefix.pch */, - 73D037B3C804B9E1BB70538E342E5104 /* FBSnapshotTestCase-umbrella.h */, - 6E66B4218824CF8160D93713DDBEEA82 /* Info.plist */, + FA93DD32367181582259A0BF4AF2C0D7 /* FBSnapshotTestCase.h */, + 6462F24C3105950F66A5DF1F0A12E98B /* FBSnapshotTestCase.m */, + B63A46EB407C0A5960C6AA0C29BA2CEE /* FBSnapshotTestCasePlatform.h */, + 387A6D96DB403759A67B281B55AE83D4 /* FBSnapshotTestCasePlatform.m */, + D94F7F72C0A8169FAEC9850E79D05F93 /* FBSnapshotTestController.h */, + CD72CFD979F343D37CB387971F514B01 /* FBSnapshotTestController.m */, + DF36DAF810A4891871D88EC736F16A7D /* UIImage+Compare.h */, + CA462AF44B6E1F01BC448A33FBA48F04 /* UIImage+Compare.m */, + 705BA72351A95278B19D57FBFD089DFC /* UIImage+Diff.h */, + C23E2EEB5492EDEF09E04FA32A1CCC45 /* UIImage+Diff.m */, + D16195EDEF3FA143C0A303E63E0BCD18 /* UIImage+Snapshot.h */, + B27E856B69CEA127575B3CE2F297224F /* UIImage+Snapshot.m */, ); - name = "Support Files"; - path = "../Target Support Files/FBSnapshotTestCase"; + name = Core; sourceTree = ""; }; - 2287B5EBEAA3C332F8DB9A1E61F5B097 /* FBSnapshotTestCase */ = { + 14B8B9B15ECBE87983FF987239AB2D7B /* Frameworks */ = { isa = PBXGroup; children = ( - F35791481CAFDD8E7715AE1B44687328 /* Core */, - 1549F91FCD089822594C1F5DB8AB9E8F /* Support Files */, - 99E46DD4AB2256791F111C718CB0EEF8 /* SwiftSupport */, + F76C5E10C253876355FB231229C42226 /* iOS */, ); - path = FBSnapshotTestCase; + name = Frameworks; sourceTree = ""; }; - 5562AD51AD0F674A0BE5CE991200804F /* Products */ = { + 650F028C4EAB5D4538E83B21F265B258 /* Pods */ = { isa = PBXGroup; children = ( - E3CAB65856BF4AC7B1D274D5DF0A8D0E /* FBSnapshotTestCase.framework */, - D986A0978615C7C0A2EEC879ABC903D6 /* Pods_DZNEmptyDataSetTests.framework */, + 781E4722255ABB33F5BA9F7EFC09E1C7 /* iOSSnapshotTestCase */, ); - name = Products; + name = Pods; + sourceTree = ""; + }; + 781E4722255ABB33F5BA9F7EFC09E1C7 /* iOSSnapshotTestCase */ = { + isa = PBXGroup; + children = ( + 05C07DDB5937D64286E80CDCA5239CFA /* Core */, + EC39C7C2D06D5559ACC63B4691FE39B6 /* Support Files */, + 032091FEE0217BC41BDBCF0E859700FD /* SwiftSupport */, + ); + name = iOSSnapshotTestCase; + path = iOSSnapshotTestCase; sourceTree = ""; }; 78F6FDED8CCA373F6FC7DE2408CA433F /* Pods-DZNEmptyDataSetTests */ = { @@ -171,18 +180,19 @@ children = ( 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, 14B8B9B15ECBE87983FF987239AB2D7B /* Frameworks */, - FBD2D672921284E66F309CA3462F84D6 /* Pods */, - 5562AD51AD0F674A0BE5CE991200804F /* Products */, + 650F028C4EAB5D4538E83B21F265B258 /* Pods */, + B0159874D442B2B8297B5C6D53BD84C7 /* Products */, CC81C10316175BED2809544DDE234F8B /* Targets Support Files */, ); sourceTree = ""; }; - 99E46DD4AB2256791F111C718CB0EEF8 /* SwiftSupport */ = { + B0159874D442B2B8297B5C6D53BD84C7 /* Products */ = { isa = PBXGroup; children = ( - D97545C39C4A5EE2631DD9FFECE76A40 /* SwiftSupport.swift */, + 3DAB7D50A686BC39D47014339C46EAAE /* FBSnapshotTestCase.framework */, + 42E9750D383AC69CE913DCEBBE9051C6 /* Pods_DZNEmptyDataSetTests.framework */, ); - name = SwiftSupport; + name = Products; sourceTree = ""; }; CC81C10316175BED2809544DDE234F8B /* Targets Support Files */ = { @@ -193,25 +203,18 @@ name = "Targets Support Files"; sourceTree = ""; }; - F35791481CAFDD8E7715AE1B44687328 /* Core */ = { + EC39C7C2D06D5559ACC63B4691FE39B6 /* Support Files */ = { isa = PBXGroup; children = ( - E37899BD4B349060AA147E2A3721D3A2 /* FBSnapshotTestCase.h */, - 39577E2B806B8B2D019998DE60728F63 /* FBSnapshotTestCase.m */, - 7E3DB4D092B985E76E227F7F313C6981 /* FBSnapshotTestCasePlatform.h */, - 58A2557E7CE20AACCD1B28B1CD1F920D /* FBSnapshotTestCasePlatform.m */, - 1374B79237CAC07693E99442FBED1F15 /* FBSnapshotTestController.h */, - 052258A488A96C35531FAC73C4F42924 /* FBSnapshotTestController.m */, - B9109B8B333B5A1A3E92EFC09EDC10AC /* UIApplication+StrictKeyWindow.h */, - 2EECE81A9AEC1ED1057A9C3C88DBCEBE /* UIApplication+StrictKeyWindow.m */, - 432938111B6FF0189EFFEDF2F845B308 /* UIImage+Compare.h */, - 3B5E22F9517F21D3A0251F88FCAB281E /* UIImage+Compare.m */, - 85E250EF19C5B5671AEC10BEB508D087 /* UIImage+Diff.h */, - B9CEF7D6C5E08AB80E58DABC75D882BC /* UIImage+Diff.m */, - 0B161931541BFE46DFEA2092EDDDA815 /* UIImage+Snapshot.h */, - 3DBFBDCC891B770A2AC9EF0FB164B751 /* UIImage+Snapshot.m */, + 38761B7C4306AF333DD60A0DFCD5EACA /* Info.plist */, + D238E03B80CFE29597331FF4273B9B8F /* iOSSnapshotTestCase.modulemap */, + 9D68DFDC26576427E59E9367858CEB62 /* iOSSnapshotTestCase.xcconfig */, + D75D1D209CD3519A7ED75708A53731AC /* iOSSnapshotTestCase-dummy.m */, + 74D8FA8D7E60AAF327E5214A07C7454B /* iOSSnapshotTestCase-prefix.pch */, + 5C06DB657AB1E8FF9A66D369DE9B0241 /* iOSSnapshotTestCase-umbrella.h */, ); - name = Core; + name = "Support Files"; + path = "../Target Support Files/iOSSnapshotTestCase"; sourceTree = ""; }; F76C5E10C253876355FB231229C42226 /* iOS */ = { @@ -225,76 +228,67 @@ name = iOS; sourceTree = ""; }; - FBD2D672921284E66F309CA3462F84D6 /* Pods */ = { - isa = PBXGroup; - children = ( - 2287B5EBEAA3C332F8DB9A1E61F5B097 /* FBSnapshotTestCase */, - ); - name = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 9DC6F5AC11E37A1EB45C6473C9E800B6 /* Headers */ = { + 1C1C5854325854EE36E8AC36A8E78705 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - B758FB09FE2C06C1B8E36A71A9D76D41 /* FBSnapshotTestCase-umbrella.h in Headers */, - 9673CF780F48C8E4EC2A331717B1F67C /* FBSnapshotTestCase.h in Headers */, - BFCE460CC33E8872B7156D4166340178 /* FBSnapshotTestCasePlatform.h in Headers */, - 2F485B69F51E4F723A38410F31F08550 /* FBSnapshotTestController.h in Headers */, - BC952FC04FC963C1294DCD619C9B6B3B /* UIApplication+StrictKeyWindow.h in Headers */, - CAFA5E486BCE117A7D8C0FBF9DA6666B /* UIImage+Compare.h in Headers */, - 051A816D6DD0CAE13496DDCFE0829167 /* UIImage+Diff.h in Headers */, - 421CDD701AEE0F2458A84200366CDD0F /* UIImage+Snapshot.h in Headers */, + 774A420FCFA15B67B466C60405F5084C /* FBSnapshotTestCase.h in Headers */, + 4C9D350DB2A8F0727E7CE4D79192AC55 /* FBSnapshotTestCasePlatform.h in Headers */, + E5A23E9758FEED86555B3C62F1138C01 /* FBSnapshotTestController.h in Headers */, + 30FC8B30CE5CAFE5E90D8AE7261AE5D4 /* iOSSnapshotTestCase-umbrella.h in Headers */, + 7A5FC1B55B42A907E401D4C59A32EBEF /* UIImage+Compare.h in Headers */, + 79F8DA087C92A87D097EC073BE7DE7E3 /* UIImage+Diff.h in Headers */, + D90EE23157EF1E2B029149E2ABCDDED4 /* UIImage+Snapshot.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - A017BA3952678EEAD8B431CD7D109B0F /* Headers */ = { + 812B75D023A3D2424A24A8A52E7C0F91 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 56714A3A615A3F2DBA4CC98EE8254200 /* Pods-DZNEmptyDataSetTests-umbrella.h in Headers */, + CDD5625A77094A45BABC524EC3516C4F /* Pods-DZNEmptyDataSetTests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 34CD2E3428AB802BACA62286FF5074B1 /* FBSnapshotTestCase */ = { + BFC6DB46D0F2DC7150A42264441BA14D /* iOSSnapshotTestCase */ = { isa = PBXNativeTarget; - buildConfigurationList = F28097D43AF5CD8DA838ABD52A053790 /* Build configuration list for PBXNativeTarget "FBSnapshotTestCase" */; + buildConfigurationList = 6240B299005DEA7FF4670E5681B97704 /* Build configuration list for PBXNativeTarget "iOSSnapshotTestCase" */; buildPhases = ( - AD173CC510A850B6289189A20CD107AE /* Sources */, - 1D421A30A1BDB7E1C4216F64D0C939B1 /* Frameworks */, - 9DC6F5AC11E37A1EB45C6473C9E800B6 /* Headers */, + DE795B9D0846779A9CC3C0F1A0FBFA32 /* Sources */, + 46D9BDE8342D451706A0D81F4AF10B89 /* Frameworks */, + 1C1C5854325854EE36E8AC36A8E78705 /* Headers */, ); buildRules = ( ); dependencies = ( ); - name = FBSnapshotTestCase; - productName = FBSnapshotTestCase; - productReference = E3CAB65856BF4AC7B1D274D5DF0A8D0E /* FBSnapshotTestCase.framework */; + name = iOSSnapshotTestCase; + productName = iOSSnapshotTestCase; + productReference = 3DAB7D50A686BC39D47014339C46EAAE /* FBSnapshotTestCase.framework */; productType = "com.apple.product-type.framework"; }; - E94125F0FAFC8CBEC775F6155F126805 /* Pods-DZNEmptyDataSetTests */ = { + C31DDB8B45A5D83517BD185AA29944D9 /* Pods-DZNEmptyDataSetTests */ = { isa = PBXNativeTarget; - buildConfigurationList = EFF3DF2FA77DD170E281CC04AD423EC2 /* Build configuration list for PBXNativeTarget "Pods-DZNEmptyDataSetTests" */; + buildConfigurationList = AE83DFF9708DAB8755F7BB9247A0E4E9 /* Build configuration list for PBXNativeTarget "Pods-DZNEmptyDataSetTests" */; buildPhases = ( - 75A3EE7B134EBB82122CFA95B58D4B3D /* Sources */, - 43F30C5735D7530C37ED8AF4346D3EEA /* Frameworks */, - A017BA3952678EEAD8B431CD7D109B0F /* Headers */, + F7D5D9E28E55F8BF17D806435EE4B823 /* Sources */, + C0C590C61D597580094074212CE6D431 /* Frameworks */, + 812B75D023A3D2424A24A8A52E7C0F91 /* Headers */, ); buildRules = ( ); dependencies = ( - 4D0085DD5D38700462DE3BCFA695070B /* PBXTargetDependency */, + 8F3D76FBB309C6D6E5851477730842E4 /* PBXTargetDependency */, ); name = "Pods-DZNEmptyDataSetTests"; productName = "Pods-DZNEmptyDataSetTests"; - productReference = D986A0978615C7C0A2EEC879ABC903D6 /* Pods_DZNEmptyDataSetTests.framework */; + productReference = 42E9750D383AC69CE913DCEBBE9051C6 /* Pods_DZNEmptyDataSetTests.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -304,7 +298,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0730; - LastUpgradeCheck = 0920; + LastUpgradeCheck = 0700; }; buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; @@ -314,163 +308,56 @@ en, ); mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = 5562AD51AD0F674A0BE5CE991200804F /* Products */; + productRefGroup = B0159874D442B2B8297B5C6D53BD84C7 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - 34CD2E3428AB802BACA62286FF5074B1 /* FBSnapshotTestCase */, - E94125F0FAFC8CBEC775F6155F126805 /* Pods-DZNEmptyDataSetTests */, + BFC6DB46D0F2DC7150A42264441BA14D /* iOSSnapshotTestCase */, + C31DDB8B45A5D83517BD185AA29944D9 /* Pods-DZNEmptyDataSetTests */, ); }; /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 75A3EE7B134EBB82122CFA95B58D4B3D /* Sources */ = { + DE795B9D0846779A9CC3C0F1A0FBFA32 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - C0D0EBCEBAD879ADDC3CFC9E5A2106B6 /* Pods-DZNEmptyDataSetTests-dummy.m in Sources */, + 32A55AE0DD706E7BC8F18CA6B21505B3 /* FBSnapshotTestCase.m in Sources */, + 94AF4A61AC2B9EDA3A1451740747B45E /* FBSnapshotTestCasePlatform.m in Sources */, + 1A5A6E183160B640DF814E2CC25B6937 /* FBSnapshotTestController.m in Sources */, + 29FF55B7B09815A5389D3BBD129E4473 /* iOSSnapshotTestCase-dummy.m in Sources */, + 0A21482B840E435BD920CFDA8CBA7058 /* SwiftSupport.swift in Sources */, + 4CBE669E5155E026F74732CBB0E77362 /* UIImage+Compare.m in Sources */, + B6EE380A20E764D912CF7CF9DDCCA9BA /* UIImage+Diff.m in Sources */, + 378EEE0B1A986D3F82344A8E1F9961EB /* UIImage+Snapshot.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - AD173CC510A850B6289189A20CD107AE /* Sources */ = { + F7D5D9E28E55F8BF17D806435EE4B823 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - F33986F4969B4F178AF9EB568FE8B1AA /* FBSnapshotTestCase-dummy.m in Sources */, - D097F3914F8E2EA14FB7C88FA3099F26 /* FBSnapshotTestCase.m in Sources */, - 7F97C4BCF71877056A7829143E78F33B /* FBSnapshotTestCasePlatform.m in Sources */, - E9D5EF482949E65F0E84B0810721CFBF /* FBSnapshotTestController.m in Sources */, - 5F65495211297994220A8D081EAEFE15 /* SwiftSupport.swift in Sources */, - 61100C0E6FB329EE38659B3E5A1B7090 /* UIApplication+StrictKeyWindow.m in Sources */, - 1B9CD9B6D735874DB6B698EBA615EA6B /* UIImage+Compare.m in Sources */, - 7408D9BD00535B58DA91AF916EE58641 /* UIImage+Diff.m in Sources */, - 6FAB5298272C4B4E26438CF8C9F14BA4 /* UIImage+Snapshot.m in Sources */, + DD1194FD31222C55B4CF6026A13C55A5 /* Pods-DZNEmptyDataSetTests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 4D0085DD5D38700462DE3BCFA695070B /* PBXTargetDependency */ = { + 8F3D76FBB309C6D6E5851477730842E4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FBSnapshotTestCase; - target = 34CD2E3428AB802BACA62286FF5074B1 /* FBSnapshotTestCase */; - targetProxy = 137CED399020A4C91F6D16D350EC19DC /* PBXContainerItemProxy */; + name = iOSSnapshotTestCase; + target = BFC6DB46D0F2DC7150A42264441BA14D /* iOSSnapshotTestCase */; + targetProxy = DE3B6FBE18A19B7BEA0A12B325959AC3 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 015A368F878AC3E2CEAE21DDE8026304 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_DEBUG=1", - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - ONLY_ACTIVE_ARCH = YES; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Debug; - }; - 44CDBB6D11DE06DB64D6268622BDC47E /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_RELEASE=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; - STRIP_INSTALLED_PRODUCT = NO; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SYMROOT = "${SRCROOT}/../build"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 9DC7940AB2609170956317F0FA336D60 /* Release */ = { + 1CF63CA2D82A714970222AA8EBB500C1 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 203C357C2053664409B6F57E85862F88 /* Pods-DZNEmptyDataSetTests.release.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; @@ -484,7 +371,7 @@ GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "Target Support Files/Pods-DZNEmptyDataSetTests/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; MODULEMAP_FILE = "Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests.modulemap"; @@ -496,16 +383,16 @@ PRODUCT_NAME = Pods_DZNEmptyDataSetTests; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - A48DF838CD32B60CBA3139D4DA2D0D1E /* Debug */ = { + 3D10F2AC0E6D3BB8C6930062B779961C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DADAF30F2D84FDAAD2ADD2D50C1F40DF /* FBSnapshotTestCase.xcconfig */; + baseConfigurationReference = 9DB5C2C4D709B5098593FBE989824B59 /* Pods-DZNEmptyDataSetTests.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -518,93 +405,176 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/FBSnapshotTestCase/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-DZNEmptyDataSetTests/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.modulemap"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests.modulemap"; MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = FBSnapshotTestCase; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_DZNEmptyDataSetTests; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - B57EE59C0A00DB99D4A5A4068B8C0C7B /* Release */ = { + 59B042A655B7C20CBAB90E385BF4E4C7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_REQUIRED = NO; + COPY_PHASE_STRIP = NO; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + ONLY_ACTIVE_ARCH = YES; + PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Debug; + }; + AF758A008A05FABCFBFC606DF961BC88 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DADAF30F2D84FDAAD2ADD2D50C1F40DF /* FBSnapshotTestCase.xcconfig */; + baseConfigurationReference = 9D68DFDC26576427E59E9367858CEB62 /* iOSSnapshotTestCase.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/FBSnapshotTestCase/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/iOSSnapshotTestCase/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; + MODULEMAP_FILE = "Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_NAME = FBSnapshotTestCase; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - FA67C1E3D7332203E07E2C272399F87E /* Debug */ = { + B2D0022E73B1626DFF559445BD46CBA8 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9DB5C2C4D709B5098593FBE989824B59 /* Pods-DZNEmptyDataSetTests.debug.xcconfig */; + baseConfigurationReference = 9D68DFDC26576427E59E9367858CEB62 /* iOSSnapshotTestCase.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "Target Support Files/Pods-DZNEmptyDataSetTests/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/iOSSnapshotTestCase/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_DZNEmptyDataSetTests; + MODULEMAP_FILE = "Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = FBSnapshotTestCase; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; + }; + B7324857C38B065FEB1EEE3105C2367A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_REQUIRED = NO; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; + VALIDATE_PRODUCT = YES; + }; + name = Release; }; /* End XCBuildConfiguration section */ @@ -612,26 +582,26 @@ 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 015A368F878AC3E2CEAE21DDE8026304 /* Debug */, - 44CDBB6D11DE06DB64D6268622BDC47E /* Release */, + 59B042A655B7C20CBAB90E385BF4E4C7 /* Debug */, + B7324857C38B065FEB1EEE3105C2367A /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - EFF3DF2FA77DD170E281CC04AD423EC2 /* Build configuration list for PBXNativeTarget "Pods-DZNEmptyDataSetTests" */ = { + 6240B299005DEA7FF4670E5681B97704 /* Build configuration list for PBXNativeTarget "iOSSnapshotTestCase" */ = { isa = XCConfigurationList; buildConfigurations = ( - FA67C1E3D7332203E07E2C272399F87E /* Debug */, - 9DC7940AB2609170956317F0FA336D60 /* Release */, + AF758A008A05FABCFBFC606DF961BC88 /* Debug */, + B2D0022E73B1626DFF559445BD46CBA8 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - F28097D43AF5CD8DA838ABD52A053790 /* Build configuration list for PBXNativeTarget "FBSnapshotTestCase" */ = { + AE83DFF9708DAB8755F7BB9247A0E4E9 /* Build configuration list for PBXNativeTarget "Pods-DZNEmptyDataSetTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - A48DF838CD32B60CBA3139D4DA2D0D1E /* Debug */, - B57EE59C0A00DB99D4A5A4068B8C0C7B /* Release */, + 3D10F2AC0E6D3BB8C6930062B779961C /* Debug */, + 1CF63CA2D82A714970222AA8EBB500C1 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/DZNEmptyDataSet/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-dummy.m b/DZNEmptyDataSet/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-dummy.m deleted file mode 100644 index fb0c8fe9..00000000 --- a/DZNEmptyDataSet/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_FBSnapshotTestCase : NSObject -@end -@implementation PodsDummy_FBSnapshotTestCase -@end diff --git a/DZNEmptyDataSet/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-prefix.pch b/DZNEmptyDataSet/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-prefix.pch deleted file mode 100644 index aa992a4a..00000000 --- a/DZNEmptyDataSet/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-prefix.pch +++ /dev/null @@ -1,4 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - diff --git a/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests-acknowledgements.markdown b/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests-acknowledgements.markdown index 2a27ea6e..86eb1f4a 100644 --- a/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests-acknowledgements.markdown +++ b/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests-acknowledgements.markdown @@ -1,36 +1,29 @@ # Acknowledgements This application makes use of the following third party libraries: -## FBSnapshotTestCase - -BSD License - -For the FBSnapshotTestCase software - -Copyright (c) 2013, Facebook, Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name Facebook nor the names of its contributors may be used to - endorse or promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +## iOSSnapshotTestCase + +MIT License + +Copyright (c) 2017-2018, Uber Technologies, Inc. +Copyright (c) 2013-2018, Facebook, Inc. + +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: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +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. Generated by CocoaPods - https://cocoapods.org diff --git a/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests-acknowledgements.plist b/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests-acknowledgements.plist index 7f6bd1a3..f24c9fdf 100644 --- a/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests-acknowledgements.plist +++ b/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests-acknowledgements.plist @@ -14,40 +14,33 @@ FooterText - BSD License + MIT License -For the FBSnapshotTestCase software +Copyright (c) 2017-2018, Uber Technologies, Inc. +Copyright (c) 2013-2018, Facebook, Inc. -Copyright (c) 2013, Facebook, Inc. -All rights reserved. +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: -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name Facebook nor the names of its contributors may be used to - endorse or promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +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. License - BSD + MIT Title - FBSnapshotTestCase + iOSSnapshotTestCase Type PSGroupSpecifier diff --git a/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests-frameworks.sh b/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests-frameworks.sh index e28de50a..86f2bab3 100755 --- a/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests-frameworks.sh +++ b/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests-frameworks.sh @@ -59,8 +59,13 @@ code_sign_if_enabled() { if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then # Use the current code_sign_identitiy echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements \"$1\"" - /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements "$1" + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements '$1'" + + if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + code_sign_cmd="$code_sign_cmd &" + fi + echo "$code_sign_cmd" + eval "$code_sign_cmd" fi } @@ -84,8 +89,11 @@ strip_invalid_archs() { if [[ "$CONFIGURATION" == "Debug" ]]; then - install_framework "$BUILT_PRODUCTS_DIR/FBSnapshotTestCase/FBSnapshotTestCase.framework" + install_framework "$BUILT_PRODUCTS_DIR/iOSSnapshotTestCase/FBSnapshotTestCase.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then - install_framework "$BUILT_PRODUCTS_DIR/FBSnapshotTestCase/FBSnapshotTestCase.framework" + install_framework "$BUILT_PRODUCTS_DIR/iOSSnapshotTestCase/FBSnapshotTestCase.framework" +fi +if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + wait fi diff --git a/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests-resources.sh b/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests-resources.sh index 25e9d377..4602c68a 100755 --- a/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests-resources.sh +++ b/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests-resources.sh @@ -18,6 +18,9 @@ case "${TARGETED_DEVICE_FAMILY}" in 2) TARGET_DEVICE_ARGS="--target-device ipad" ;; + 3) + TARGET_DEVICE_ARGS="--target-device tv" + ;; *) TARGET_DEVICE_ARGS="--target-device mac" ;; diff --git a/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests-umbrella.h b/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests-umbrella.h index 5994218d..4fe688e5 100644 --- a/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests-umbrella.h +++ b/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests-umbrella.h @@ -1,5 +1,13 @@ #ifdef __OBJC__ #import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif #endif diff --git a/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests.debug.xcconfig b/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests.debug.xcconfig index ef5c0a54..e56d0641 100644 --- a/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests.debug.xcconfig +++ b/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests.debug.xcconfig @@ -1,9 +1,8 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES EMBEDDED_CONTENT_CONTAINS_SWIFT = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) $(PLATFORM_DIR)/Developer/Library/Frameworks "$PODS_CONFIGURATION_BUILD_DIR/FBSnapshotTestCase" +FRAMEWORK_SEARCH_PATHS = $(inherited) $(PLATFORM_DIR)/Developer/Library/Frameworks "$PODS_CONFIGURATION_BUILD_DIR/iOSSnapshotTestCase" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSnapshotTestCase/FBSnapshotTestCase.framework/Headers" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/iOSSnapshotTestCase/FBSnapshotTestCase.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "FBSnapshotTestCase" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR diff --git a/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests.release.xcconfig b/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests.release.xcconfig index ef5c0a54..e56d0641 100644 --- a/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests.release.xcconfig +++ b/DZNEmptyDataSet/Pods/Target Support Files/Pods-DZNEmptyDataSetTests/Pods-DZNEmptyDataSetTests.release.xcconfig @@ -1,9 +1,8 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES EMBEDDED_CONTENT_CONTAINS_SWIFT = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) $(PLATFORM_DIR)/Developer/Library/Frameworks "$PODS_CONFIGURATION_BUILD_DIR/FBSnapshotTestCase" +FRAMEWORK_SEARCH_PATHS = $(inherited) $(PLATFORM_DIR)/Developer/Library/Frameworks "$PODS_CONFIGURATION_BUILD_DIR/iOSSnapshotTestCase" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/FBSnapshotTestCase/FBSnapshotTestCase.framework/Headers" +OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/iOSSnapshotTestCase/FBSnapshotTestCase.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "FBSnapshotTestCase" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR diff --git a/DZNEmptyDataSet/Pods/Target Support Files/FBSnapshotTestCase/Info.plist b/DZNEmptyDataSet/Pods/Target Support Files/iOSSnapshotTestCase/Info.plist similarity index 96% rename from DZNEmptyDataSet/Pods/Target Support Files/FBSnapshotTestCase/Info.plist rename to DZNEmptyDataSet/Pods/Target Support Files/iOSSnapshotTestCase/Info.plist index 57b76a5d..3424ca66 100644 --- a/DZNEmptyDataSet/Pods/Target Support Files/FBSnapshotTestCase/Info.plist +++ b/DZNEmptyDataSet/Pods/Target Support Files/iOSSnapshotTestCase/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.1.4 + 4.0.0 CFBundleSignature ???? CFBundleVersion diff --git a/DZNEmptyDataSet/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-dummy.m b/DZNEmptyDataSet/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-dummy.m new file mode 100644 index 00000000..9967d3eb --- /dev/null +++ b/DZNEmptyDataSet/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_iOSSnapshotTestCase : NSObject +@end +@implementation PodsDummy_iOSSnapshotTestCase +@end diff --git a/DZNEmptyDataSet/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-prefix.pch b/DZNEmptyDataSet/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-prefix.pch new file mode 100644 index 00000000..beb2a244 --- /dev/null +++ b/DZNEmptyDataSet/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/DZNEmptyDataSet/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-umbrella.h b/DZNEmptyDataSet/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-umbrella.h similarity index 66% rename from DZNEmptyDataSet/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-umbrella.h rename to DZNEmptyDataSet/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-umbrella.h index 3481131a..1734e029 100644 --- a/DZNEmptyDataSet/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase-umbrella.h +++ b/DZNEmptyDataSet/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase-umbrella.h @@ -1,5 +1,13 @@ #ifdef __OBJC__ #import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif #endif #import "FBSnapshotTestCase.h" diff --git a/DZNEmptyDataSet/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.modulemap b/DZNEmptyDataSet/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase.modulemap similarity index 59% rename from DZNEmptyDataSet/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.modulemap rename to DZNEmptyDataSet/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase.modulemap index 45b74ece..d2c2777f 100644 --- a/DZNEmptyDataSet/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.modulemap +++ b/DZNEmptyDataSet/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase.modulemap @@ -1,5 +1,5 @@ framework module FBSnapshotTestCase { - umbrella header "FBSnapshotTestCase-umbrella.h" + umbrella header "iOSSnapshotTestCase-umbrella.h" export * module * { export * } diff --git a/DZNEmptyDataSet/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.xcconfig b/DZNEmptyDataSet/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase.xcconfig similarity index 76% rename from DZNEmptyDataSet/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.xcconfig rename to DZNEmptyDataSet/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase.xcconfig index 2fa5f79f..d0a9ed00 100644 --- a/DZNEmptyDataSet/Pods/Target Support Files/FBSnapshotTestCase/FBSnapshotTestCase.xcconfig +++ b/DZNEmptyDataSet/Pods/Target Support Files/iOSSnapshotTestCase/iOSSnapshotTestCase.xcconfig @@ -1,12 +1,13 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/FBSnapshotTestCase +CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/iOSSnapshotTestCase ENABLE_BITCODE = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" OTHER_LDFLAGS = -framework "Foundation" -framework "QuartzCore" -framework "UIKit" -framework "XCTest" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" "-suppress-warnings" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/iOSSnapshotTestCase PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES diff --git a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.h b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.h similarity index 96% rename from DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.h rename to DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.h index 9091d62a..ecb79a3f 100644 --- a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.h +++ b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.h @@ -30,8 +30,12 @@ #import +NS_ASSUME_NONNULL_BEGIN + @interface UIImage (Compare) - (BOOL)fb_compareWithImage:(UIImage *)image tolerance:(CGFloat)tolerance; @end + +NS_ASSUME_NONNULL_END diff --git a/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.m b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.m new file mode 100644 index 00000000..5d50b5e4 --- /dev/null +++ b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Compare.m @@ -0,0 +1,132 @@ +// +// Created by Gabriel Handford on 3/1/09. +// Copyright 2009-2013. All rights reserved. +// Created by John Boiles on 10/20/11. +// Copyright (c) 2011. All rights reserved +// Modified by Felix Schulze on 2/11/13. +// Copyright 2013. All rights reserved. +// +// 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: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// 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. +// + +#import + +// This makes debugging much more fun +typedef union { + uint32_t raw; + unsigned char bytes[4]; + struct { + char red; + char green; + char blue; + char alpha; + } __attribute__((packed)) pixels; +} FBComparePixel; + +@implementation UIImage (Compare) + +- (BOOL)fb_compareWithImage:(UIImage *)image tolerance:(CGFloat)tolerance +{ + NSAssert(CGSizeEqualToSize(self.size, image.size), @"Images must be same size."); + + CGSize referenceImageSize = CGSizeMake(CGImageGetWidth(self.CGImage), CGImageGetHeight(self.CGImage)); + CGSize imageSize = CGSizeMake(CGImageGetWidth(image.CGImage), CGImageGetHeight(image.CGImage)); + + // The images have the equal size, so we could use the smallest amount of bytes because of byte padding + size_t minBytesPerRow = MIN(CGImageGetBytesPerRow(self.CGImage), CGImageGetBytesPerRow(image.CGImage)); + size_t referenceImageSizeBytes = referenceImageSize.height * minBytesPerRow; + void *referenceImagePixels = calloc(1, referenceImageSizeBytes); + void *imagePixels = calloc(1, referenceImageSizeBytes); + + if (!referenceImagePixels || !imagePixels) { + free(referenceImagePixels); + free(imagePixels); + return NO; + } + + CGContextRef referenceImageContext = CGBitmapContextCreate(referenceImagePixels, + referenceImageSize.width, + referenceImageSize.height, + CGImageGetBitsPerComponent(self.CGImage), + minBytesPerRow, + CGImageGetColorSpace(self.CGImage), + (CGBitmapInfo)kCGImageAlphaPremultipliedLast); + CGContextRef imageContext = CGBitmapContextCreate(imagePixels, + imageSize.width, + imageSize.height, + CGImageGetBitsPerComponent(image.CGImage), + minBytesPerRow, + CGImageGetColorSpace(image.CGImage), + (CGBitmapInfo)kCGImageAlphaPremultipliedLast); + + if (!referenceImageContext || !imageContext) { + CGContextRelease(referenceImageContext); + CGContextRelease(imageContext); + free(referenceImagePixels); + free(imagePixels); + return NO; + } + + CGContextDrawImage(referenceImageContext, CGRectMake(0, 0, referenceImageSize.width, referenceImageSize.height), self.CGImage); + CGContextDrawImage(imageContext, CGRectMake(0, 0, imageSize.width, imageSize.height), image.CGImage); + + CGContextRelease(referenceImageContext); + CGContextRelease(imageContext); + + BOOL imageEqual = YES; + + // Do a fast compare if we can + if (tolerance == 0) { + imageEqual = (memcmp(referenceImagePixels, imagePixels, referenceImageSizeBytes) == 0); + } else { + // Go through each pixel in turn and see if it is different + const NSInteger pixelCount = referenceImageSize.width * referenceImageSize.height; + + FBComparePixel *p1 = referenceImagePixels; + FBComparePixel *p2 = imagePixels; + + NSInteger numDiffPixels = 0; + for (int n = 0; n < pixelCount; ++n) { + // If this pixel is different, increment the pixel diff count and see + // if we have hit our limit. + if (p1->raw != p2->raw) { + numDiffPixels++; + + CGFloat percent = (CGFloat)numDiffPixels / pixelCount; + if (percent > tolerance) { + imageEqual = NO; + break; + } + } + + p1++; + p2++; + } + } + + free(referenceImagePixels); + free(imagePixels); + + return imageEqual; +} + +@end diff --git a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.h b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.h similarity index 96% rename from DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.h rename to DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.h index a0863f30..2a97e116 100644 --- a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.h +++ b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.h @@ -30,8 +30,12 @@ #import +NS_ASSUME_NONNULL_BEGIN + @interface UIImage (Diff) - (UIImage *)fb_diffWithImage:(UIImage *)image; @end + +NS_ASSUME_NONNULL_END diff --git a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.m b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.m similarity index 62% rename from DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.m rename to DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.m index ebb72fe3..7cb1d40b 100644 --- a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.m +++ b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Diff.m @@ -34,23 +34,23 @@ @implementation UIImage (Diff) - (UIImage *)fb_diffWithImage:(UIImage *)image { - if (!image) { - return nil; - } - CGSize imageSize = CGSizeMake(MAX(self.size.width, image.size.width), MAX(self.size.height, image.size.height)); - UIGraphicsBeginImageContextWithOptions(imageSize, YES, 0); - CGContextRef context = UIGraphicsGetCurrentContext(); - [self drawInRect:CGRectMake(0, 0, self.size.width, self.size.height)]; - CGContextSetAlpha(context, 0.5); - CGContextBeginTransparencyLayer(context, NULL); - [image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)]; - CGContextSetBlendMode(context, kCGBlendModeDifference); - CGContextSetFillColorWithColor(context,[UIColor whiteColor].CGColor); - CGContextFillRect(context, CGRectMake(0, 0, self.size.width, self.size.height)); - CGContextEndTransparencyLayer(context); - UIImage *returnImage = UIGraphicsGetImageFromCurrentImageContext(); - UIGraphicsEndImageContext(); - return returnImage; + if (!image) { + return nil; + } + CGSize imageSize = CGSizeMake(MAX(self.size.width, image.size.width), MAX(self.size.height, image.size.height)); + UIGraphicsBeginImageContextWithOptions(imageSize, YES, 0); + CGContextRef context = UIGraphicsGetCurrentContext(); + [self drawInRect:CGRectMake(0, 0, self.size.width, self.size.height)]; + CGContextSetAlpha(context, 0.5); + CGContextBeginTransparencyLayer(context, NULL); + [image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)]; + CGContextSetBlendMode(context, kCGBlendModeDifference); + CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor); + CGContextFillRect(context, CGRectMake(0, 0, self.size.width, self.size.height)); + CGContextEndTransparencyLayer(context); + UIImage *returnImage = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + return returnImage; } @end diff --git a/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.h b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.h new file mode 100644 index 00000000..10c304fe --- /dev/null +++ b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2017-2018, Uber Technologies, Inc. + * Copyright (c) 2015-2018, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface UIImage (Snapshot) + +/// Uses renderInContext: to get a snapshot of the layer. ++ (nullable UIImage *)fb_imageForLayer:(CALayer *)layer; + +/// Uses renderInContext: to get a snapshot of the view layer. ++ (nullable UIImage *)fb_imageForViewLayer:(UIView *)view; + +/// Uses drawViewHierarchyInRect: to get a snapshot of the view and adds the view into a window if needed. ++ (nullable UIImage *)fb_imageForView:(UIView *)view; + +@end + +NS_ASSUME_NONNULL_END diff --git a/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.m b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.m new file mode 100644 index 00000000..e1830b3d --- /dev/null +++ b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/Categories/UIImage+Snapshot.m @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2017-2018, Uber Technologies, Inc. + * Copyright (c) 2015-2018, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import + +@implementation UIImage (Snapshot) + ++ (UIImage *)fb_imageForLayer:(CALayer *)layer +{ + CGRect bounds = layer.bounds; + NSAssert1(CGRectGetWidth(bounds), @"Zero width for layer %@", layer); + NSAssert1(CGRectGetHeight(bounds), @"Zero height for layer %@", layer); + + UIGraphicsBeginImageContextWithOptions(bounds.size, NO, 0); + CGContextRef context = UIGraphicsGetCurrentContext(); + NSAssert1(context, @"Could not generate context for layer %@", layer); + CGContextSaveGState(context); + [layer layoutIfNeeded]; + [layer renderInContext:context]; + CGContextRestoreGState(context); + + UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + return snapshot; +} + ++ (UIImage *)fb_imageForViewLayer:(UIView *)view +{ + [view layoutIfNeeded]; + return [self fb_imageForLayer:view.layer]; +} + ++ (UIImage *)fb_imageForView:(UIView *)view +{ + // If the input view is already a UIWindow, then just use that. Otherwise wrap in a window. + UIWindow *window = [view isKindOfClass:[UIWindow class]] ? (UIWindow *)view : view.window; + BOOL removeFromSuperview = NO; + if (!window) { + window = [[UIApplication sharedApplication] keyWindow]; + } + + if (!view.window && view != window) { + [window addSubview:view]; + removeFromSuperview = YES; + } + + [view layoutIfNeeded]; + + CGRect bounds = view.bounds; + NSAssert1(CGRectGetWidth(bounds), @"Zero width for view %@", view); + NSAssert1(CGRectGetHeight(bounds), @"Zero height for view %@", view); + + UIGraphicsBeginImageContextWithOptions(bounds.size, NO, 0); + [view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES]; + + UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + + if (removeFromSuperview) { + [view removeFromSuperview]; + } + + return snapshot; +} + +@end diff --git a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.h b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.h similarity index 58% rename from DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.h rename to DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.h index 72abc3c0..5e802ec3 100644 --- a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.h +++ b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.h @@ -1,10 +1,9 @@ /* - * Copyright (c) 2015, Facebook, Inc. - * All rights reserved. + * Copyright (c) 2017-2018, Uber Technologies, Inc. + * Copyright (c) 2015-2018, Facebook, Inc. * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. * */ @@ -32,6 +31,20 @@ #define FB_REFERENCE_IMAGE_DIR "" #endif +/* + There are three ways of setting failed image diff directories. + + 1. Set the preprocessor macro IMAGE_DIFF_DIR to a double quoted + c-string with the path. + 2. Set an environment variable named IMAGE_DIFF_DIR with the path. This + takes precedence over the preprocessor macro to allow for run-time override. + 3. Keep everything unset, which will cause the failed image diff images to be saved + inside a temporary directory. + */ +#ifndef IMAGE_DIFF_DIR +#define IMAGE_DIFF_DIR "" +#endif + /** Similar to our much-loved XCTAssert() macros. Use this to perform your test. No need to write an explanation, though. @param view The view to snapshot @@ -40,10 +53,10 @@ @param tolerance The percentage of pixels that can differ and still count as an 'identical' view */ #define FBSnapshotVerifyViewWithOptions(view__, identifier__, suffixes__, tolerance__) \ - FBSnapshotVerifyViewOrLayerWithOptions(View, view__, identifier__, suffixes__, tolerance__) + FBSnapshotVerifyViewOrLayerWithOptions(View, view__, identifier__, suffixes__, tolerance__) #define FBSnapshotVerifyView(view__, identifier__) \ - FBSnapshotVerifyViewWithOptions(view__, identifier__, FBSnapshotTestCaseDefaultSuffixes(), 0) + FBSnapshotVerifyViewWithOptions(view__, identifier__, FBSnapshotTestCaseDefaultSuffixes(), 0) /** @@ -54,26 +67,27 @@ @param tolerance The percentage of pixels that can differ and still count as an 'identical' layer */ #define FBSnapshotVerifyLayerWithOptions(layer__, identifier__, suffixes__, tolerance__) \ - FBSnapshotVerifyViewOrLayerWithOptions(Layer, layer__, identifier__, suffixes__, tolerance__) + FBSnapshotVerifyViewOrLayerWithOptions(Layer, layer__, identifier__, suffixes__, tolerance__) #define FBSnapshotVerifyLayer(layer__, identifier__) \ - FBSnapshotVerifyLayerWithOptions(layer__, identifier__, FBSnapshotTestCaseDefaultSuffixes(), 0) + FBSnapshotVerifyLayerWithOptions(layer__, identifier__, FBSnapshotTestCaseDefaultSuffixes(), 0) -#define FBSnapshotVerifyViewOrLayerWithOptions(what__, viewOrLayer__, identifier__, suffixes__, tolerance__) \ -{ \ - NSString *errorDescription = [self snapshotVerifyViewOrLayer:viewOrLayer__ identifier:identifier__ suffixes:suffixes__ tolerance:tolerance__]; \ - BOOL noErrors = (errorDescription == nil); \ - XCTAssertTrue(noErrors, @"%@", errorDescription); \ -} +#define FBSnapshotVerifyViewOrLayerWithOptions(what__, viewOrLayer__, identifier__, suffixes__, tolerance__) \ + { \ + NSString *errorDescription = [self snapshotVerifyViewOrLayer:viewOrLayer__ identifier:identifier__ suffixes:suffixes__ tolerance:tolerance__ defaultReferenceDirectory:(@FB_REFERENCE_IMAGE_DIR) defaultImageDiffDirectory:(@IMAGE_DIFF_DIR)]; \ + BOOL noErrors = (errorDescription == nil); \ + XCTAssertTrue(noErrors, @"%@", errorDescription); \ + } +NS_ASSUME_NONNULL_BEGIN /** The base class of view snapshotting tests. If you have small UI component, it's often easier to configure it in a test and compare an image of the view to a reference image that write lots of complex layout-code tests. - + In order to flip the tests in your subclass to record the reference images set @c recordMode to @c YES. - + @attention When recording, the reference image directory should be explicitly set, otherwise the images may be written to somewhere inside the simulator directory. @@ -98,7 +112,25 @@ When @c YES appends the name of the device model and OS to the snapshot file name. The default value is @c NO. */ -@property (readwrite, nonatomic, assign, getter=isDeviceAgnostic) BOOL deviceAgnostic; +@property (readwrite, nonatomic, assign, getter=isDeviceAgnostic) BOOL deviceAgnostic DEPRECATED_MSG_ATTRIBUTE("Use agnosticOptions instead. deviceAgnostic will be removed in a future version of iOS Snapshot Test Case."); + +/** + When set, allows fine-grained control over how agnostic you want the file names to be. + + Allows you to combine which agnostic options you want in your snapshot file names. + + The default value is FBSnapshotTestCaseAgnosticOptionNone. + + @attention If deviceAgnostic is YES, this bitmask is ignored. deviceAgnostic will be deprecated in a future version of FBSnapshotTestCase. + */ +@property (readwrite, nonatomic, assign) FBSnapshotTestCaseAgnosticOption agnosticOptions; + +/** + Overrides the folder name in which the snapshot is going to be saved. + + @attention This property *must* be called *AFTER* [super setUp]. + */ +@property (readwrite, nonatomic, copy, nullable) NSString *folderName; /** When YES, renders a snapshot of the complete view hierarchy as visible onscreen. @@ -106,7 +138,7 @@ - UIVisualEffect #70 - UIAppearance #91 - Size Classes #92 - + @attention If the view does't belong to a UIWindow, it will create one and add the view as a subview. */ @property (readwrite, nonatomic, assign) BOOL usesDrawViewHierarchyInRect; @@ -120,17 +152,22 @@ @param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method. @param suffixes An NSOrderedSet of strings for the different suffixes @param tolerance The percentage difference to still count as identical - 0 mean pixel perfect, 1 means I don't care + @param defaultReferenceDirectory The directory to default to for reference images. + @param defaultImageDiffDirectory The directory to default to for failed image diffs. @returns nil if the comparison (or saving of the reference image) succeeded. Otherwise it contains an error description. */ -- (NSString *)snapshotVerifyViewOrLayer:(id)viewOrLayer - identifier:(NSString *)identifier - suffixes:(NSOrderedSet *)suffixes - tolerance:(CGFloat)tolerance; +- (nullable NSString *)snapshotVerifyViewOrLayer:(id)viewOrLayer + identifier:(nullable NSString *)identifier + suffixes:(NSOrderedSet *)suffixes + tolerance:(CGFloat)tolerance + defaultReferenceDirectory:(nullable NSString *)defaultReferenceDirectory + defaultImageDiffDirectory:(nullable NSString *)defaultImageDiffDirectory; /** Performs the comparison or records a snapshot of the layer if recordMode is YES. @param layer The Layer to snapshot @param referenceImagesDirectory The directory in which reference images are stored. + @param imageDiffDirectory The directory in which failed image diffs are stored. @param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method. @param tolerance The percentage difference to still count as identical - 0 mean pixel perfect, 1 means I don't care @param errorPtr An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc). @@ -138,7 +175,8 @@ */ - (BOOL)compareSnapshotOfLayer:(CALayer *)layer referenceImagesDirectory:(NSString *)referenceImagesDirectory - identifier:(NSString *)identifier + imageDiffDirectory:(NSString *)imageDiffDirectory + identifier:(nullable NSString *)identifier tolerance:(CGFloat)tolerance error:(NSError **)errorPtr; @@ -146,6 +184,7 @@ Performs the comparison or records a snapshot of the view if recordMode is YES. @param view The view to snapshot @param referenceImagesDirectory The directory in which reference images are stored. + @param imageDiffDirectory The directory in which failed image diffs are stored. @param identifier An optional identifier, used if there are multiple snapshot tests in a given -test method. @param tolerance The percentage difference to still count as identical - 0 mean pixel perfect, 1 means I don't care @param errorPtr An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc). @@ -153,7 +192,8 @@ */ - (BOOL)compareSnapshotOfView:(UIView *)view referenceImagesDirectory:(NSString *)referenceImagesDirectory - identifier:(NSString *)identifier + imageDiffDirectory:(NSString *)imageDiffDirectory + identifier:(nullable NSString *)identifier tolerance:(CGFloat)tolerance error:(NSError **)errorPtr; @@ -165,7 +205,7 @@ @returns YES if reference image exists. */ - (BOOL)referenceImageRecordedInDirectory:(NSString *)referenceImagesDirectory - identifier:(NSString *)identifier + identifier:(nullable NSString *)identifier error:(NSError **)errorPtr; /** @@ -173,8 +213,19 @@ Helper function used to implement the assert macros. - @param dir directory to use if environment variable not specified. Ignored if null or empty. + @param dir Directory to use if environment variable not specified. Ignored if null or empty. + */ +- (NSString *)getReferenceImageDirectoryWithDefault:(nullable NSString *)dir; + +/** + Returns the failed image diff directory. + + Helper function used to implement the assert macros. + + @param dir Directory to use if environment variable not specified. Ignored if null or empty. */ -- (NSString *)getReferenceImageDirectoryWithDefault:(NSString *)dir; +- (NSString *)getImageDiffDirectoryWithDefault:(nullable NSString *)dir; @end + +NS_ASSUME_NONNULL_END diff --git a/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.m b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.m new file mode 100644 index 00000000..f6050e79 --- /dev/null +++ b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCase.m @@ -0,0 +1,237 @@ +/* + * Copyright (c) 2017-2018, Uber Technologies, Inc. + * Copyright (c) 2015-2018, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import +#import + +@implementation FBSnapshotTestCase { + FBSnapshotTestController *_snapshotController; +} + +#pragma mark - Overrides + +- (void)setUp +{ + [super setUp]; + _snapshotController = [[FBSnapshotTestController alloc] initWithTestClass:[self class]]; +} + +- (void)tearDown +{ + _snapshotController = nil; + [super tearDown]; +} + +- (BOOL)recordMode +{ + return _snapshotController.recordMode; +} + +- (void)setRecordMode:(BOOL)recordMode +{ + NSAssert1(_snapshotController, @"%s cannot be called before [super setUp]", __FUNCTION__); + _snapshotController.recordMode = recordMode; +} + +- (BOOL)isDeviceAgnostic +{ + return _snapshotController.deviceAgnostic; +} + +- (void)setDeviceAgnostic:(BOOL)deviceAgnostic +{ + NSAssert1(_snapshotController, @"%s cannot be called before [super setUp]", __FUNCTION__); + _snapshotController.deviceAgnostic = deviceAgnostic; +} + +- (FBSnapshotTestCaseAgnosticOption)agnosticOptions +{ + return _snapshotController.agnosticOptions; +} + +- (void)setAgnosticOptions:(FBSnapshotTestCaseAgnosticOption)agnosticOptions +{ + NSAssert1(_snapshotController, @"%s cannot be called before [super setUp]", __FUNCTION__); + _snapshotController.agnosticOptions = agnosticOptions; +} + +- (BOOL)usesDrawViewHierarchyInRect +{ + return _snapshotController.usesDrawViewHierarchyInRect; +} + +- (void)setUsesDrawViewHierarchyInRect:(BOOL)usesDrawViewHierarchyInRect +{ + NSAssert1(_snapshotController, @"%s cannot be called before [super setUp]", __FUNCTION__); + _snapshotController.usesDrawViewHierarchyInRect = usesDrawViewHierarchyInRect; +} + +- (NSString *)folderName +{ + return _snapshotController.folderName; +} + +- (void)setFolderName:(NSString *)folderName +{ + _snapshotController.folderName = folderName; +} + +#pragma mark - Public API + +- (NSString *)snapshotVerifyViewOrLayer:(id)viewOrLayer + identifier:(NSString *)identifier + suffixes:(NSOrderedSet *)suffixes + tolerance:(CGFloat)tolerance + defaultReferenceDirectory:(NSString *)defaultReferenceDirectory + defaultImageDiffDirectory:(NSString *)defaultImageDiffDirectory +{ + if (nil == viewOrLayer) { + return @"Object to be snapshotted must not be nil"; + } + + NSString *referenceImageDirectory = [self getReferenceImageDirectoryWithDefault:defaultReferenceDirectory]; + if (referenceImageDirectory == nil) { + return @"Missing value for referenceImagesDirectory - Set FB_REFERENCE_IMAGE_DIR as an Environment variable in your scheme."; + } + + NSString *imageDiffDirectory = [self getImageDiffDirectoryWithDefault:defaultImageDiffDirectory]; + if (imageDiffDirectory == nil) { + return @"Missing value for imageDiffDirectory - Set IMAGE_DIFF_DIR as an Environment variable in your scheme."; + } + + if (suffixes.count == 0) { + return [NSString stringWithFormat:@"Suffixes set cannot be empty %@", suffixes]; + } + + BOOL testSuccess = NO; + NSError *error = nil; + NSMutableArray *errors = [NSMutableArray array]; + + if (self.recordMode) { + NSString *referenceImagesDirectory = [NSString stringWithFormat:@"%@%@", referenceImageDirectory, suffixes.firstObject]; + BOOL referenceImageSaved = [self _compareSnapshotOfViewOrLayer:viewOrLayer referenceImagesDirectory:referenceImagesDirectory imageDiffDirectory:imageDiffDirectory identifier:(identifier) tolerance:tolerance error:&error]; + if (!referenceImageSaved) { + [errors addObject:error]; + } + } else { + for (NSString *suffix in suffixes) { + NSString *referenceImagesDirectory = [NSString stringWithFormat:@"%@%@", referenceImageDirectory, suffix]; + BOOL referenceImageAvailable = [self referenceImageRecordedInDirectory:referenceImagesDirectory identifier:(identifier) error:&error]; + + if (referenceImageAvailable) { + BOOL comparisonSuccess = [self _compareSnapshotOfViewOrLayer:viewOrLayer referenceImagesDirectory:referenceImagesDirectory imageDiffDirectory:imageDiffDirectory identifier:identifier tolerance:tolerance error:&error]; + [errors removeAllObjects]; + if (comparisonSuccess) { + testSuccess = YES; + break; + } else { + [errors addObject:error]; + } + } else { + [errors addObject:error]; + } + } + } + + if (!testSuccess) { + return [NSString stringWithFormat:@"Snapshot comparison failed: %@", errors.firstObject]; + } + if (self.recordMode) { + return @"Test ran in record mode. Reference image is now saved. Disable record mode to perform an actual snapshot comparison!"; + } + + return nil; +} + +- (BOOL)compareSnapshotOfLayer:(CALayer *)layer + referenceImagesDirectory:(NSString *)referenceImagesDirectory + imageDiffDirectory:(NSString *)imageDiffDirectory + identifier:(NSString *)identifier + tolerance:(CGFloat)tolerance + error:(NSError **)errorPtr +{ + return [self _compareSnapshotOfViewOrLayer:layer + referenceImagesDirectory:referenceImagesDirectory + imageDiffDirectory:imageDiffDirectory + identifier:identifier + tolerance:tolerance + error:errorPtr]; +} + +- (BOOL)compareSnapshotOfView:(UIView *)view + referenceImagesDirectory:(NSString *)referenceImagesDirectory + imageDiffDirectory:(NSString *)imageDiffDirectory + identifier:(NSString *)identifier + tolerance:(CGFloat)tolerance + error:(NSError **)errorPtr +{ + return [self _compareSnapshotOfViewOrLayer:view + referenceImagesDirectory:referenceImagesDirectory + imageDiffDirectory:imageDiffDirectory + identifier:identifier + tolerance:tolerance + error:errorPtr]; +} + +- (BOOL)referenceImageRecordedInDirectory:(NSString *)referenceImagesDirectory + identifier:(NSString *)identifier + error:(NSError **)errorPtr +{ + NSAssert1(_snapshotController, @"%s cannot be called before [super setUp]", __FUNCTION__); + _snapshotController.referenceImagesDirectory = referenceImagesDirectory; + UIImage *referenceImage = [_snapshotController referenceImageForSelector:self.invocation.selector + identifier:identifier + error:errorPtr]; + + return (referenceImage != nil); +} + +- (NSString *)getReferenceImageDirectoryWithDefault:(NSString *)dir +{ + NSString *envReferenceImageDirectory = [NSProcessInfo processInfo].environment[@"FB_REFERENCE_IMAGE_DIR"]; + if (envReferenceImageDirectory) { + return envReferenceImageDirectory; + } + if (dir && dir.length > 0) { + return dir; + } + return [[NSBundle bundleForClass:self.class].resourcePath stringByAppendingPathComponent:@"ReferenceImages"]; +} + +- (NSString *)getImageDiffDirectoryWithDefault:(NSString *)dir +{ + NSString *envImageDiffDirectory = [NSProcessInfo processInfo].environment[@"IMAGE_DIFF_DIR"]; + if (envImageDiffDirectory) { + return envImageDiffDirectory; + } + if (dir && dir.length > 0) { + return dir; + } + return NSTemporaryDirectory(); +} + +#pragma mark - Private API + +- (BOOL)_compareSnapshotOfViewOrLayer:(id)viewOrLayer + referenceImagesDirectory:(NSString *)referenceImagesDirectory + imageDiffDirectory:(NSString *)imageDiffDirectory + identifier:(NSString *)identifier + tolerance:(CGFloat)tolerance + error:(NSError **)errorPtr +{ + _snapshotController.referenceImagesDirectory = referenceImagesDirectory; + _snapshotController.imageDiffDirectory = imageDiffDirectory; + return [_snapshotController compareSnapshotOfViewOrLayer:viewOrLayer + selector:self.invocation.selector + identifier:identifier + tolerance:tolerance + error:errorPtr]; +} + +@end diff --git a/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h new file mode 100644 index 00000000..0bdfcc22 --- /dev/null +++ b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.h @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2017-2018, Uber Technologies, Inc. + * Copyright (c) 2015-2018, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import + +#ifdef __cplusplus +extern "C" { +#endif + +NS_ASSUME_NONNULL_BEGIN + +/** + An option mask that allows you to cherry pick which parts you want to 'be agnostic' in the snapshot file name. + + - FBSnapshotTestCaseAgnosticOptionNone: Don't make the file name agnostic at all. + - FBSnapshotTestCaseAgnosticOptionDevice: The file name should be agnostic on the device name, as returned by UIDevice.currentDevice.model. + - FBSnapshotTestCaseAgnosticOptionOS: The file name should be agnostic on the OS version, as returned by UIDevice.currentDevice.systemVersion. + - FBSnapshotTestCaseAgnosticOptionScreenSize: The file name should be agnostic on the screen size of the current keyWindow, as returned by UIApplication.sharedApplication.keyWindow.bounds.size. + */ +typedef NS_OPTIONS(NSUInteger, FBSnapshotTestCaseAgnosticOption) { + FBSnapshotTestCaseAgnosticOptionNone = 1 << 0, + FBSnapshotTestCaseAgnosticOptionDevice = 1 << 1, + FBSnapshotTestCaseAgnosticOptionOS = 1 << 2, + FBSnapshotTestCaseAgnosticOptionScreenSize = 1 << 3 +}; + +/** + Returns a Boolean value that indicates whether the snapshot test is running in 64Bit. + This method is a convenience for creating the suffixes set based on the architecture + that the test is running. + + @returns @c YES if the test is running in 64bit, otherwise @c NO. + */ +BOOL FBSnapshotTestCaseIs64Bit(void); + +/** + Returns a default set of strings that is used to append a suffix based on the architectures. + @warning Do not modify this function, you can create your own and use it with @c FBSnapshotVerifyViewWithOptions() + + @returns An @c NSOrderedSet object containing strings that are appended to the reference images directory. + */ +NSOrderedSet *FBSnapshotTestCaseDefaultSuffixes(void); + +/** + Returns a fully «normalized» file name. + Strips punctuation and spaces and replaces them with @c _. Also appends the device model, running OS and screen size to the file name. + + @returns An @c NSString object containing the passed @c fileName with the device model, OS and screen size appended at the end. + */ +NSString *FBDeviceAgnosticNormalizedFileName(NSString *fileName); + +/** + Returns a fully normalized file name as per the provided option mask. Strips punctuation and spaces and replaces them with @c _. + + @param fileName The file name to normalize. + @param option Agnostic options to use before normalization. + @return An @c NSString object containing the passed @c fileName and optionally, with the device model and/or OS and/or screen size appended at the end. + */ +NSString *FBDeviceAgnosticNormalizedFileNameFromOption(NSString *fileName, FBSnapshotTestCaseAgnosticOption option); + +NS_ASSUME_NONNULL_END + +#ifdef __cplusplus +} +#endif diff --git a/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.m b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.m new file mode 100644 index 00000000..98d70393 --- /dev/null +++ b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestCasePlatform.m @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2017-2018, Uber Technologies, Inc. + * Copyright (c) 2015-2018, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import +#import + +BOOL FBSnapshotTestCaseIs64Bit(void) +{ +#if __LP64__ + return YES; +#else + return NO; +#endif +} + +NSOrderedSet *FBSnapshotTestCaseDefaultSuffixes(void) +{ + NSMutableOrderedSet *suffixesSet = [[NSMutableOrderedSet alloc] init]; + [suffixesSet addObject:@"_32"]; + [suffixesSet addObject:@"_64"]; + if (FBSnapshotTestCaseIs64Bit()) { + return [suffixesSet reversedOrderedSet]; + } + return [suffixesSet copy]; +} + +NSString *FBDeviceAgnosticNormalizedFileName(NSString *fileName) +{ + UIDevice *device = [UIDevice currentDevice]; + UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow]; + CGSize screenSize = keyWindow.bounds.size; + NSString *os = device.systemVersion; + + fileName = [NSString stringWithFormat:@"%@_%@%@_%.0fx%.0f", fileName, device.model, os, screenSize.width, screenSize.height]; + + NSMutableCharacterSet *invalidCharacters = [NSMutableCharacterSet new]; + [invalidCharacters formUnionWithCharacterSet:[NSCharacterSet whitespaceCharacterSet]]; + [invalidCharacters formUnionWithCharacterSet:[NSCharacterSet punctuationCharacterSet]]; + NSArray *validComponents = [fileName componentsSeparatedByCharactersInSet:invalidCharacters]; + fileName = [validComponents componentsJoinedByString:@"_"]; + + return fileName; +} + +NSString *FBDeviceAgnosticNormalizedFileNameFromOption(NSString *fileName, FBSnapshotTestCaseAgnosticOption option) +{ + if ((option & FBSnapshotTestCaseAgnosticOptionDevice) == FBSnapshotTestCaseAgnosticOptionDevice) { + UIDevice *device = [UIDevice currentDevice]; + fileName = [fileName stringByAppendingFormat:@"_%@", device.model]; + } + + if ((option & FBSnapshotTestCaseAgnosticOptionOS) == FBSnapshotTestCaseAgnosticOptionOS) { + UIDevice *device = [UIDevice currentDevice]; + NSString *os = device.systemVersion; + fileName = [fileName stringByAppendingFormat:@"_%@", os]; + } + + if ((option & FBSnapshotTestCaseAgnosticOptionScreenSize) == FBSnapshotTestCaseAgnosticOptionScreenSize) { + UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow]; + CGSize screenSize = keyWindow.bounds.size; + fileName = [fileName stringByAppendingFormat:@"_%.0fx%.0f", screenSize.width, screenSize.height]; + } + + NSMutableCharacterSet *invalidCharacters = [NSMutableCharacterSet new]; + [invalidCharacters formUnionWithCharacterSet:[NSCharacterSet whitespaceCharacterSet]]; + [invalidCharacters formUnionWithCharacterSet:[NSCharacterSet punctuationCharacterSet]]; + NSArray *validComponents = [fileName componentsSeparatedByCharactersInSet:invalidCharacters]; + fileName = [validComponents componentsJoinedByString:@"_"]; + + return fileName; +} diff --git a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.h b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.h similarity index 68% rename from DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.h rename to DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.h index a0285ad8..5161b05c 100644 --- a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.h +++ b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.h @@ -1,23 +1,27 @@ /* - * Copyright (c) 2015, Facebook, Inc. - * All rights reserved. + * Copyright (c) 2017-2018, Uber Technologies, Inc. + * Copyright (c) 2015-2018, Facebook, Inc. * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. * */ #import #import +#import + +NS_ASSUME_NONNULL_BEGIN + typedef NS_ENUM(NSInteger, FBSnapshotTestControllerErrorCode) { - FBSnapshotTestControllerErrorCodeUnknown, - FBSnapshotTestControllerErrorCodeNeedsRecord, - FBSnapshotTestControllerErrorCodePNGCreationFailed, - FBSnapshotTestControllerErrorCodeImagesDifferentSizes, - FBSnapshotTestControllerErrorCodeImagesDifferent, + FBSnapshotTestControllerErrorCodeUnknown, + FBSnapshotTestControllerErrorCodeNeedsRecord, + FBSnapshotTestControllerErrorCodePNGCreationFailed, + FBSnapshotTestControllerErrorCodeImagesDifferentSizes, + FBSnapshotTestControllerErrorCodeImagesDifferent, }; + /** Errors returned by the methods of FBSnapshotTestController use this domain. */ @@ -61,40 +65,54 @@ extern NSString *const FBDiffedImageKey; */ @property (readwrite, nonatomic, assign, getter=isDeviceAgnostic) BOOL deviceAgnostic; +/** + When set, allows fine-grained control over how agnostic you want the file names to be. + + Allows you to combine which agnostic options you want in your snapshot file names. + + The default value is FBSnapshotTestCaseAgnosticOptionNone. + + @attention If deviceAgnostic is YES, this bitmask is ignored. deviceAgnostic will be deprecated in a future version of FBSnapshotTestCase. + */ +@property (readwrite, nonatomic, assign) FBSnapshotTestCaseAgnosticOption agnosticOptions; + /** Uses drawViewHierarchyInRect:afterScreenUpdates: to draw the image instead of renderInContext: */ @property (readwrite, nonatomic, assign) BOOL usesDrawViewHierarchyInRect; /** - The directory in which referfence images are stored. + The directory in which reference images are stored. */ -@property (readwrite, nonatomic, copy) NSString *referenceImagesDirectory; +@property (readwrite, nonatomic, copy, nullable) NSString *referenceImagesDirectory; /** - @param testClass The subclass of FBSnapshotTestCase that is using this controller. - @returns An instance of FBSnapshotTestController. + The directory in which failed snapshot images are stored. */ -- (instancetype)initWithTestClass:(Class)testClass; +@property (readwrite, nonatomic, copy) NSString *imageDiffDirectory; + +/** + The name folder in which the snapshots will be saved for a given test case. +*/ +@property (readwrite, nonatomic, copy) NSString *folderName; /** - Designated initializer. - @param testName The name of the tests. + @param testClass The subclass of FBSnapshotTestCase that is using this controller. @returns An instance of FBSnapshotTestController. */ -- (instancetype)initWithTestName:(NSString *)testName; +- (instancetype)initWithTestClass:(Class)testClass; /** Performs the comparison of the layer. @param layer The Layer to snapshot. @param selector The test method being run. @param identifier An optional identifier, used is there are muliptle snapshot tests in a given -test method. - @param error An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc). + @param errorPtr An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc). @returns YES if the comparison (or saving of the reference image) succeeded. */ - (BOOL)compareSnapshotOfLayer:(CALayer *)layer selector:(SEL)selector - identifier:(NSString *)identifier + identifier:(nullable NSString *)identifier error:(NSError **)errorPtr; /** @@ -102,26 +120,26 @@ extern NSString *const FBDiffedImageKey; @param view The view to snapshot. @param selector The test method being run. @param identifier An optional identifier, used is there are muliptle snapshot tests in a given -test method. - @param error An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc). + @param errorPtr An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc). @returns YES if the comparison (or saving of the reference image) succeeded. */ - (BOOL)compareSnapshotOfView:(UIView *)view selector:(SEL)selector - identifier:(NSString *)identifier + identifier:(nullable NSString *)identifier error:(NSError **)errorPtr; /** Performs the comparison of a view or layer. - @param view The view or layer to snapshot. + @param viewOrLayer The view or layer to snapshot. @param selector The test method being run. @param identifier An optional identifier, used is there are muliptle snapshot tests in a given -test method. @param tolerance The percentage of pixels that can differ and still be considered 'identical' - @param error An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc). + @param errorPtr An error to log in an XCTAssert() macro if the method fails (missing reference image, images differ, etc). @returns YES if the comparison (or saving of the reference image) succeeded. */ - (BOOL)compareSnapshotOfViewOrLayer:(id)viewOrLayer selector:(SEL)selector - identifier:(NSString *)identifier + identifier:(nullable NSString *)identifier tolerance:(CGFloat)tolerance error:(NSError **)errorPtr; @@ -132,9 +150,9 @@ extern NSString *const FBDiffedImageKey; @param errorPtr An error, if this methods returns nil, the error will be something useful. @returns An image. */ -- (UIImage *)referenceImageForSelector:(SEL)selector - identifier:(NSString *)identifier - error:(NSError **)errorPtr; +- (nullable UIImage *)referenceImageForSelector:(SEL)selector + identifier:(nullable NSString *)identifier + error:(NSError **)errorPtr; /** Performs a pixel-by-pixel comparison of the two images with an allowable margin of error. @@ -161,6 +179,8 @@ extern NSString *const FBDiffedImageKey; - (BOOL)saveFailedReferenceImage:(UIImage *)referenceImage testImage:(UIImage *)testImage selector:(SEL)selector - identifier:(NSString *)identifier + identifier:(nullable NSString *)identifier error:(NSError **)errorPtr; @end + +NS_ASSUME_NONNULL_END diff --git a/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.m b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.m new file mode 100644 index 00000000..00293448 --- /dev/null +++ b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/FBSnapshotTestController.m @@ -0,0 +1,351 @@ +/* + * Copyright (c) 2017-2018, Uber Technologies, Inc. + * Copyright (c) 2015-2018, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import +#import +#import +#import +#import + +#import + +NSString *const FBSnapshotTestControllerErrorDomain = @"FBSnapshotTestControllerErrorDomain"; +NSString *const FBReferenceImageFilePathKey = @"FBReferenceImageFilePathKey"; +NSString *const FBReferenceImageKey = @"FBReferenceImageKey"; +NSString *const FBCapturedImageKey = @"FBCapturedImageKey"; +NSString *const FBDiffedImageKey = @"FBDiffedImageKey"; + +typedef NS_ENUM(NSUInteger, FBTestSnapshotFileNameType) { + FBTestSnapshotFileNameTypeReference, + FBTestSnapshotFileNameTypeFailedReference, + FBTestSnapshotFileNameTypeFailedTest, + FBTestSnapshotFileNameTypeFailedTestDiff, +}; + +@implementation FBSnapshotTestController { + NSFileManager *_fileManager; +} + +#pragma mark - Initializers + +- (instancetype)initWithTestClass:(Class)testClass; +{ + if (self = [super init]) { + _folderName = NSStringFromClass(testClass); + _deviceAgnostic = NO; + _agnosticOptions = FBSnapshotTestCaseAgnosticOptionNone; + + _fileManager = [[NSFileManager alloc] init]; + } + return self; +} + +#pragma mark - Overrides + +- (NSString *)description +{ + return [NSString stringWithFormat:@"%@ %@", [super description], _referenceImagesDirectory]; +} + +#pragma mark - Public API + +- (BOOL)compareSnapshotOfLayer:(CALayer *)layer + selector:(SEL)selector + identifier:(NSString *)identifier + error:(NSError **)errorPtr +{ + return [self compareSnapshotOfViewOrLayer:layer + selector:selector + identifier:identifier + tolerance:0 + error:errorPtr]; +} + +- (BOOL)compareSnapshotOfView:(UIView *)view + selector:(SEL)selector + identifier:(NSString *)identifier + error:(NSError **)errorPtr +{ + return [self compareSnapshotOfViewOrLayer:view + selector:selector + identifier:identifier + tolerance:0 + error:errorPtr]; +} + +- (BOOL)compareSnapshotOfViewOrLayer:(id)viewOrLayer + selector:(SEL)selector + identifier:(NSString *)identifier + tolerance:(CGFloat)tolerance + error:(NSError **)errorPtr +{ + if (self.recordMode) { + return [self _recordSnapshotOfViewOrLayer:viewOrLayer selector:selector identifier:identifier error:errorPtr]; + } else { + return [self _performPixelComparisonWithViewOrLayer:viewOrLayer selector:selector identifier:identifier tolerance:tolerance error:errorPtr]; + } +} + +- (UIImage *)referenceImageForSelector:(SEL)selector + identifier:(NSString *)identifier + error:(NSError **)errorPtr +{ + NSString *filePath = [self _referenceFilePathForSelector:selector identifier:identifier]; + UIImage *image = [UIImage imageWithContentsOfFile:filePath]; + if (nil == image && NULL != errorPtr) { + BOOL exists = [_fileManager fileExistsAtPath:filePath]; + if (!exists) { + *errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain + code:FBSnapshotTestControllerErrorCodeNeedsRecord + userInfo:@{ + FBReferenceImageFilePathKey : filePath, + NSLocalizedDescriptionKey : @"Unable to load reference image.", + NSLocalizedFailureReasonErrorKey : @"Reference image not found. You need to run the test in record mode", + }]; + } else { + *errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain + code:FBSnapshotTestControllerErrorCodeUnknown + userInfo:nil]; + } + } + return image; +} + +- (BOOL)compareReferenceImage:(UIImage *)referenceImage + toImage:(UIImage *)image + tolerance:(CGFloat)tolerance + error:(NSError **)errorPtr +{ + BOOL sameImageDimensions = CGSizeEqualToSize(referenceImage.size, image.size); + if (sameImageDimensions && [referenceImage fb_compareWithImage:image tolerance:tolerance]) { + return YES; + } + + if (NULL != errorPtr) { + NSString *errorDescription = sameImageDimensions ? @"Images different" : @"Images different sizes"; + NSString *errorReason = sameImageDimensions ? [NSString stringWithFormat:@"image pixels differed by more than %.2f%% from the reference image", tolerance * 100] : [NSString stringWithFormat:@"referenceImage:%@, image:%@", NSStringFromCGSize(referenceImage.size), NSStringFromCGSize(image.size)]; + FBSnapshotTestControllerErrorCode errorCode = sameImageDimensions ? FBSnapshotTestControllerErrorCodeImagesDifferent : FBSnapshotTestControllerErrorCodeImagesDifferentSizes; + + *errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain + code:errorCode + userInfo:@{ + NSLocalizedDescriptionKey : errorDescription, + NSLocalizedFailureReasonErrorKey : errorReason, + FBReferenceImageKey : referenceImage, + FBCapturedImageKey : image, + FBDiffedImageKey : [referenceImage fb_diffWithImage:image], + }]; + } + return NO; +} + +- (BOOL)saveFailedReferenceImage:(UIImage *)referenceImage + testImage:(UIImage *)testImage + selector:(SEL)selector + identifier:(NSString *)identifier + error:(NSError **)errorPtr +{ + NSData *referencePNGData = UIImagePNGRepresentation(referenceImage); + NSData *testPNGData = UIImagePNGRepresentation(testImage); + + NSString *referencePath = [self _failedFilePathForSelector:selector + identifier:identifier + fileNameType:FBTestSnapshotFileNameTypeFailedReference]; + + NSError *creationError = nil; + BOOL didCreateDir = [_fileManager createDirectoryAtPath:[referencePath stringByDeletingLastPathComponent] + withIntermediateDirectories:YES + attributes:nil + error:&creationError]; + if (!didCreateDir) { + if (NULL != errorPtr) { + *errorPtr = creationError; + } + return NO; + } + + if (![referencePNGData writeToFile:referencePath options:NSDataWritingAtomic error:errorPtr]) { + return NO; + } + + NSString *testPath = [self _failedFilePathForSelector:selector + identifier:identifier + fileNameType:FBTestSnapshotFileNameTypeFailedTest]; + + if (![testPNGData writeToFile:testPath options:NSDataWritingAtomic error:errorPtr]) { + return NO; + } + + NSString *diffPath = [self _failedFilePathForSelector:selector + identifier:identifier + fileNameType:FBTestSnapshotFileNameTypeFailedTestDiff]; + + UIImage *diffImage = [referenceImage fb_diffWithImage:testImage]; + NSData *diffImageData = UIImagePNGRepresentation(diffImage); + + if (![diffImageData writeToFile:diffPath options:NSDataWritingAtomic error:errorPtr]) { + return NO; + } + + NSLog(@"If you have Kaleidoscope installed you can run this command to see an image diff:\n" + @"ksdiff \"%@\" \"%@\"", + referencePath, testPath); + + return YES; +} + +#pragma mark - Private API + +- (NSString *)_fileNameForSelector:(SEL)selector + identifier:(NSString *)identifier + fileNameType:(FBTestSnapshotFileNameType)fileNameType +{ + NSString *fileName = nil; + switch (fileNameType) { + case FBTestSnapshotFileNameTypeFailedReference: + fileName = @"reference_"; + break; + case FBTestSnapshotFileNameTypeFailedTest: + fileName = @"failed_"; + break; + case FBTestSnapshotFileNameTypeFailedTestDiff: + fileName = @"diff_"; + break; + default: + fileName = @""; + break; + } + fileName = [fileName stringByAppendingString:NSStringFromSelector(selector)]; + if (0 < identifier.length) { + fileName = [fileName stringByAppendingFormat:@"_%@", identifier]; + } + + BOOL noAgnosticOption = (self.agnosticOptions & FBSnapshotTestCaseAgnosticOptionNone) == FBSnapshotTestCaseAgnosticOptionNone; + if (self.isDeviceAgnostic) { + fileName = FBDeviceAgnosticNormalizedFileName(fileName); + } else if (!noAgnosticOption) { + fileName = FBDeviceAgnosticNormalizedFileNameFromOption(fileName, self.agnosticOptions); + } + + if ([[UIScreen mainScreen] scale] > 1) { + fileName = [fileName stringByAppendingFormat:@"@%.fx", [[UIScreen mainScreen] scale]]; + } + fileName = [fileName stringByAppendingPathExtension:@"png"]; + return fileName; +} + +- (NSString *)_referenceFilePathForSelector:(SEL)selector + identifier:(NSString *)identifier +{ + NSString *fileName = [self _fileNameForSelector:selector + identifier:identifier + fileNameType:FBTestSnapshotFileNameTypeReference]; + NSString *filePath = [_referenceImagesDirectory stringByAppendingPathComponent:self.folderName]; + filePath = [filePath stringByAppendingPathComponent:fileName]; + return filePath; +} + +- (NSString *)_failedFilePathForSelector:(SEL)selector + identifier:(NSString *)identifier + fileNameType:(FBTestSnapshotFileNameType)fileNameType +{ + NSString *fileName = [self _fileNameForSelector:selector + identifier:identifier + fileNameType:fileNameType]; + + NSString *filePath = [_imageDiffDirectory stringByAppendingPathComponent:self.folderName]; + filePath = [filePath stringByAppendingPathComponent:fileName]; + return filePath; +} + +- (BOOL)_performPixelComparisonWithViewOrLayer:(id)viewOrLayer + selector:(SEL)selector + identifier:(NSString *)identifier + tolerance:(CGFloat)tolerance + error:(NSError **)errorPtr +{ + UIImage *referenceImage = [self referenceImageForSelector:selector identifier:identifier error:errorPtr]; + if (nil != referenceImage) { + UIImage *snapshot = [self _imageForViewOrLayer:viewOrLayer]; + BOOL imagesSame = [self compareReferenceImage:referenceImage toImage:snapshot tolerance:tolerance error:errorPtr]; + if (!imagesSame) { + NSError *saveError = nil; + if ([self saveFailedReferenceImage:referenceImage testImage:snapshot selector:selector identifier:identifier error:&saveError] == NO) { + NSLog(@"Error saving test images: %@", saveError); + } + } + return imagesSame; + } + return NO; +} + +- (BOOL)_recordSnapshotOfViewOrLayer:(id)viewOrLayer + selector:(SEL)selector + identifier:(NSString *)identifier + error:(NSError **)errorPtr +{ + UIImage *snapshot = [self _imageForViewOrLayer:viewOrLayer]; + return [self _saveReferenceImage:snapshot selector:selector identifier:identifier error:errorPtr]; +} + +- (BOOL)_saveReferenceImage:(UIImage *)image + selector:(SEL)selector + identifier:(NSString *)identifier + error:(NSError **)errorPtr +{ + BOOL didWrite = NO; + if (nil != image) { + NSString *filePath = [self _referenceFilePathForSelector:selector identifier:identifier]; + NSData *pngData = UIImagePNGRepresentation(image); + if (nil != pngData) { + NSError *creationError = nil; + BOOL didCreateDir = [_fileManager createDirectoryAtPath:[filePath stringByDeletingLastPathComponent] + withIntermediateDirectories:YES + attributes:nil + error:&creationError]; + if (!didCreateDir) { + if (NULL != errorPtr) { + *errorPtr = creationError; + } + return NO; + } + didWrite = [pngData writeToFile:filePath options:NSDataWritingAtomic error:errorPtr]; + if (didWrite) { + NSLog(@"Reference image save at: %@", filePath); + } + } else { + if (nil != errorPtr) { + *errorPtr = [NSError errorWithDomain:FBSnapshotTestControllerErrorDomain + code:FBSnapshotTestControllerErrorCodePNGCreationFailed + userInfo:@{ + FBReferenceImageFilePathKey : filePath, + }]; + } + } + } + return didWrite; +} + +- (UIImage *)_imageForViewOrLayer:(id)viewOrLayer +{ + if ([viewOrLayer isKindOfClass:[UIView class]]) { + if (_usesDrawViewHierarchyInRect) { + return [UIImage fb_imageForView:viewOrLayer]; + } else { + return [UIImage fb_imageForViewLayer:viewOrLayer]; + } + } else if ([viewOrLayer isKindOfClass:[CALayer class]]) { + return [UIImage fb_imageForLayer:viewOrLayer]; + } else { + [NSException raise:@"Only UIView and CALayer classes can be snapshotted" format:@"%@", viewOrLayer]; + } + return nil; +} + +@end diff --git a/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/SwiftSupport.swift b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/SwiftSupport.swift new file mode 100644 index 00000000..1e4594e6 --- /dev/null +++ b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/FBSnapshotTestCase/SwiftSupport.swift @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2017-2018, Uber Technologies, Inc. + * Copyright (c) 2015-2018, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +public extension FBSnapshotTestCase { + public func FBSnapshotVerifyView(_ view: UIView, identifier: String = "", suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), tolerance: CGFloat = 0, file: StaticString = #file, line: UInt = #line) { + FBSnapshotVerifyViewOrLayer(view, identifier: identifier, suffixes: suffixes, tolerance: tolerance, file: file, line: line) + } + + public func FBSnapshotVerifyLayer(_ layer: CALayer, identifier: String = "", suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), tolerance: CGFloat = 0, file: StaticString = #file, line: UInt = #line) { + FBSnapshotVerifyViewOrLayer(layer, identifier: identifier, suffixes: suffixes, tolerance: tolerance, file: file, line: line) + } + + private func FBSnapshotVerifyViewOrLayer(_ viewOrLayer: AnyObject, identifier: String = "", suffixes: NSOrderedSet = FBSnapshotTestCaseDefaultSuffixes(), tolerance: CGFloat = 0, file: StaticString = #file, line: UInt = #line) { + let envReferenceImageDirectory = self.getReferenceImageDirectory(withDefault: FB_REFERENCE_IMAGE_DIR) + let envImageDiffDirectory = self.getImageDiffDirectory(withDefault: IMAGE_DIFF_DIR) + var error: NSError? + var comparisonSuccess = false + + for suffix in suffixes { + let referenceImagesDirectory = "\(envReferenceImageDirectory)\(suffix)" + let imageDiffDirectory = envImageDiffDirectory + if viewOrLayer.isKind(of: UIView.self) { + do { + try compareSnapshot(of: viewOrLayer as! UIView, referenceImagesDirectory: referenceImagesDirectory, imageDiffDirectory: imageDiffDirectory, identifier: identifier, tolerance: tolerance) + comparisonSuccess = true + } catch let error1 as NSError { + error = error1 + comparisonSuccess = false + } + } else if viewOrLayer.isKind(of: CALayer.self) { + do { + try compareSnapshot(of: viewOrLayer as! CALayer, referenceImagesDirectory: referenceImagesDirectory, imageDiffDirectory: imageDiffDirectory, identifier: identifier, tolerance: tolerance) + comparisonSuccess = true + } catch let error1 as NSError { + error = error1 + comparisonSuccess = false + } + } else { + assertionFailure("Only UIView and CALayer classes can be snapshotted") + } + + assert(recordMode == false, message: "Test ran in record mode. Reference image is now saved. Disable record mode to perform an actual snapshot comparison!", file: file, line: line) + + if comparisonSuccess || recordMode { + break + } + + assert(comparisonSuccess, message: "Snapshot comparison failed: \(String(describing: error))", file: file, line: line) + } + } + + func assert(_ assertion: Bool, message: String, file: StaticString, line: UInt) { + if !assertion { + XCTFail(message, file: file, line: line) + } + } +} diff --git a/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/LICENSE b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/LICENSE new file mode 100644 index 00000000..1b3cb069 --- /dev/null +++ b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2017-2018, Uber Technologies, Inc. +Copyright (c) 2013-2018, Facebook, Inc. + +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: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +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. diff --git a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/README.md b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/README.md similarity index 56% rename from DZNEmptyDataSet/Pods/FBSnapshotTestCase/README.md rename to DZNEmptyDataSet/Pods/iOSSnapshotTestCase/README.md index bc23b837..2310bd36 100644 --- a/DZNEmptyDataSet/Pods/FBSnapshotTestCase/README.md +++ b/DZNEmptyDataSet/Pods/iOSSnapshotTestCase/README.md @@ -1,7 +1,8 @@ -FBSnapshotTestCase +iOSSnapshotTestCase (previously named FBSnapshotTestCase) ====================== -[![Build Status](https://travis-ci.org/facebook/ios-snapshot-test-case.svg)](https://travis-ci.org/facebook/ios-snapshot-test-case) [![Cocoa Pod Version](https://cocoapod-badges.herokuapp.com/v/FBSnapshotTestCase/badge.svg)](http://cocoadocs.org/docsets/FBSnapshotTestCase/) +[![Build Status](https://travis-ci.org/uber/ios-snapshot-test-case.svg)](https://travis-ci.org/uber/ios-snapshot-test-case) +[![CocoaPods Compatible](https://img.shields.io/cocoapods/v/iOSSnapshotTestCase.svg)](https://img.shields.io/cocoapods/v/iOSSnapshotTestCase.svg) What it does ------------ @@ -14,9 +15,8 @@ repository and fails the test if the two images don't match. Why? ---- -At Facebook we write a lot of UI code. As you might imagine, each type of -feed story is rendered using a subclass of `UIView`. There are a lot of edge -cases that we want to handle correctly: +We write a lot of UI code. There are a lot of edge +cases that we want to handle correctly when you are creating `UIView` instances: - What if there is more text than can fit in the space available? - What if an image doesn't match the size of an image view? @@ -27,29 +27,32 @@ views. You can do a lot of rectangle asserts, but these are hard to understand or visualize. Looking at an image diff shows you exactly what changed and how it will look to users. -We developed `FBSnapshotTestCase` to make snapshot tests easy. +`iOSSnapshotTestCase` was developed to make snapshot tests easy. Installation with CocoaPods --------------------------- 1. Add the following lines to your Podfile: - ``` + ```ruby target "Tests" do - pod 'FBSnapshotTestCase' + use_frameworks! + pod 'iOSSnapshotTestCase' end ``` - If you support iOS 7 use `FBSnapshotTestCase/Core` instead, which doesn't contain Swift support. + If your test target is Objective-C only use `iOSSnapshotTestCase/Core` instead, which doesn't contain Swift support. Replace "Tests" with the name of your test project. -2. There are [three ways](https://github.com/facebook/ios-snapshot-test-case/blob/master/FBSnapshotTestCase/FBSnapshotTestCase.h#L19-L29) of setting reference image directories, the recommended one is to define `FB_REFERENCE_IMAGE_DIR` in your scheme. This should point to the directory where you want reference images to be stored. At Facebook, we normally use this: +2. There are [three ways](https://github.com/uber/ios-snapshot-test-case/blob/master/FBSnapshotTestCase/FBSnapshotTestCase.h#L19-L29) of setting reference image directories, the recommended one is to define `FB_REFERENCE_IMAGE_DIR` in your scheme. This should point to the directory where you want reference images to be stored. We normally use this: |Name|Value| |:---|:----| |`FB_REFERENCE_IMAGE_DIR`|`$(SOURCE_ROOT)/$(PROJECT_NAME)Tests/ReferenceImages`| +|`IMAGE_DIFF_DIR`|`$(SOURCE_ROOT)/$(PROJECT_NAME)Tests/FailureDiffs`| +Define the `IMAGE_DIFF_DIR` to the directory where you want to store diffs of failed snapshots. There are also [three ways](https://github.com/uber/ios-snapshot-test-case/blob/master/FBSnapshotTestCase/FBSnapshotTestCase.h#L34-L43) to set failed image diff directories. ![](FBSnapshotTestCaseDemo/Scheme_FB_REFERENCE_IMAGE_DIR.png) @@ -79,19 +82,27 @@ Features Notes ----- -Your unit test must be an "application test", not a "logic test." (That is, it -must be run within the Simulator so that it has access to UIKit.) In Xcode 5 +Your unit tests _should_ be inside an "application" bundle, not a "logic/library" test bundle. (That is, it +should be run within the Simulator so that it has access to UIKit.) + +In Xcode 5 and later new projects only offer application tests, but older projects will have separate targets for the two types. +*However*, if you are writing snapshot tests inside a library/framework, you might want to keep your test bundle as a library test bundle without a Test Host. + +Read more on this [here](docs/LibraryVsApplicationTestBundles.md). + Authors ------- -`FBSnapshotTestCase` was written at Facebook by +`iOSSnapshotTestCase` was written at Facebook by [Jonathan Dann](https://facebook.com/j.p.dann) with significant contributions by [Todd Krabach](https://facebook.com/toddkrabach). +Today it is maintained by [Uber](https://github.com/uber) and [Alan Zeino](https://github.com/alanzeino). + License ------- -`FBSnapshotTestCase` is BSD-licensed. See `LICENSE`. +`iOSSnapshotTestCase` is MIT–licensed. See `LICENSE`. diff --git a/Source/UIScrollView+EmptyDataSet.m b/Source/UIScrollView+EmptyDataSet.m index 27d0a3a7..abc938dc 100644 --- a/Source/UIScrollView+EmptyDataSet.m +++ b/Source/UIScrollView+EmptyDataSet.m @@ -90,6 +90,7 @@ - (DZNEmptyDataSetView *)emptyDataSetView if (!view) { view = [DZNEmptyDataSetView new]; + // NOTE: Desirable in case an empty data set result is rotated. view.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight; view.hidden = YES; @@ -738,7 +739,8 @@ - (void)didMoveToSuperview CGRect superviewBounds = self.superview.bounds; self.frame = CGRectMake(0.0, 0.0, CGRectGetWidth(superviewBounds), CGRectGetHeight(superviewBounds)); - void(^fadeInBlock)(void) = ^{_contentView.alpha = 1.0;}; + __weak typeof(self) weakSelf = self; + void(^fadeInBlock)(void) = ^{weakSelf.contentView.alpha = 1.0;}; if (self.fadeInOnDisplay) { [UIView animateWithDuration:0.25