From 8dddfa7af22f9e015009170953b36b3b69a7a509 Mon Sep 17 00:00:00 2001 From: Matt Neuburg Date: Sat, 26 Jul 2014 20:39:24 -0700 Subject: [PATCH] split last example of chapter 8 into two, one in Swift (prohibitively slow), one in Objective-C --- .../AppDelegate.h | 0 .../AppDelegate.m | 0 .../Base.lproj/Main.storyboard | 84 +++ .../ch21p748collectionViewFlowLayout2/Cell.h | 0 .../ch21p748collectionViewFlowLayout2/Cell.m | 0 .../Cell.xib | 62 ++ .../AppIcon.appiconset/Contents.json | 0 .../LaunchImage.launchimage/Contents.json | 0 .../MyFlowLayout.h | 0 .../MyFlowLayout.m | 0 .../MyLayout.h | 0 .../MyLayout.m | 0 .../ViewController.h | 0 .../ViewController.m | 5 + .../ViewController2.h | 0 .../ViewController2.m | 3 +- ...ionViewLayoutFromScratch-Bridging-Header.h | 0 ...ectionViewLayoutFromScratchObjc-Info.plist | 0 ...ectionViewLayoutFromScratchObjc-Prefix.pch | 0 .../en.lproj/InfoPlist.strings | 0 .../flag_alabama.gif | Bin .../flag_alaska.gif | Bin .../flag_arizona.gif | Bin .../flag_arkansas.gif | Bin .../flag_california.gif | Bin .../flag_colorado.gif | Bin .../flag_connecticut.gif | Bin .../flag_delaware.gif | Bin .../flag_florida.gif | Bin .../flag_georgia.gif | Bin .../flag_hawaii.gif | Bin .../flag_idaho.gif | Bin .../flag_illinois.gif | Bin .../flag_indiana.gif | Bin .../flag_iowa.gif | Bin .../flag_kansas.gif | Bin .../flag_kentucky.gif | Bin .../flag_louisiana.gif | Bin .../flag_maine.gif | Bin .../flag_maryland.gif | Bin .../flag_massachusetts.gif | Bin .../flag_michigan.gif | Bin .../flag_minnesota.gif | Bin .../flag_mississippi.gif | Bin .../flag_missouri.gif | Bin .../flag_montana.gif | Bin .../flag_nebraska.gif | Bin .../flag_nevada.gif | Bin .../flag_newhampshire.gif | Bin .../flag_newjersey.gif | Bin .../flag_newmexico.gif | Bin .../flag_newyork.gif | Bin .../flag_northcarolina.gif | Bin .../flag_northdakota.gif | Bin .../flag_ohio.gif | Bin .../flag_oklahoma.gif | Bin .../flag_oregon.gif | Bin .../flag_pennsylvania.gif | Bin .../flag_rhodeisland.gif | Bin .../flag_southcarolina.gif | Bin .../flag_southdakota.gif | Bin .../flag_tennessee.gif | Bin .../flag_texas.gif | Bin .../flag_utah.gif | Bin .../flag_vermont.gif | Bin .../flag_virginia.gif | Bin .../flag_washington.gif | Bin .../flag_westvirginia.gif | Bin .../flag_wisconsin.gif | Bin .../flag_wyoming.gif | Bin .../ch21p748collectionViewFlowLayout2/main.m | 0 .../states.txt | 0 .../project.pbxproj | 575 ++++++++++++++++++ .../AppDelegate.h | 9 + .../AppDelegate.m | 14 + .../Base.lproj/Main.storyboard | 0 .../Cell.swift | 0 .../Cell.xib | 0 .../AppIcon.appiconset/Contents.json | 23 + .../LaunchImage.launchimage/Contents.json | 23 + .../MyFlowLayout.swift | 0 .../MyLayout.swift | 0 .../ViewController.swift | 6 + .../ViewController2.swift | 0 ...ionViewLayoutFromScratch-Bridging-Header.h | 4 + ...collectionViewLayoutFromScratch-Info.plist | 40 ++ ...collectionViewLayoutFromScratch-Prefix.pch | 16 + .../en.lproj/InfoPlist.strings | 2 + .../flag_alabama.gif | Bin 0 -> 1531 bytes .../flag_alaska.gif | Bin 0 -> 1619 bytes .../flag_arizona.gif | Bin 0 -> 1933 bytes .../flag_arkansas.gif | Bin 0 -> 2162 bytes .../flag_california.gif | Bin 0 -> 1920 bytes .../flag_colorado.gif | Bin 0 -> 1452 bytes .../flag_connecticut.gif | Bin 0 -> 2264 bytes .../flag_delaware.gif | Bin 0 -> 2174 bytes .../flag_florida.gif | Bin 0 -> 2093 bytes .../flag_georgia.gif | Bin 0 -> 1577 bytes .../flag_hawaii.gif | Bin 0 -> 1763 bytes .../flag_idaho.gif | Bin 0 -> 2187 bytes .../flag_illinois.gif | Bin 0 -> 1770 bytes .../flag_indiana.gif | Bin 0 -> 2033 bytes .../flag_iowa.gif | Bin 0 -> 1937 bytes .../flag_kansas.gif | Bin 0 -> 1846 bytes .../flag_kentucky.gif | Bin 0 -> 2104 bytes .../flag_louisiana.gif | Bin 0 -> 2106 bytes .../flag_maine.gif | Bin 0 -> 2158 bytes .../flag_maryland.gif | Bin 0 -> 1903 bytes .../flag_massachusetts.gif | Bin 0 -> 1741 bytes .../flag_michigan.gif | Bin 0 -> 2158 bytes .../flag_minnesota.gif | Bin 0 -> 1689 bytes .../flag_mississippi.gif | Bin 0 -> 2004 bytes .../flag_missouri.gif | Bin 0 -> 1811 bytes .../flag_montana.gif | Bin 0 -> 1745 bytes .../flag_nebraska.gif | Bin 0 -> 1734 bytes .../flag_nevada.gif | Bin 0 -> 1452 bytes .../flag_newhampshire.gif | Bin 0 -> 1704 bytes .../flag_newjersey.gif | Bin 0 -> 2424 bytes .../flag_newmexico.gif | Bin 0 -> 1641 bytes .../flag_newyork.gif | Bin 0 -> 2300 bytes .../flag_northcarolina.gif | Bin 0 -> 1511 bytes .../flag_northdakota.gif | Bin 0 -> 2256 bytes .../flag_ohio.gif | Bin 0 -> 1649 bytes .../flag_oklahoma.gif | Bin 0 -> 1830 bytes .../flag_oregon.gif | Bin 0 -> 2092 bytes .../flag_pennsylvania.gif | Bin 0 -> 1849 bytes .../flag_rhodeisland.gif | Bin 0 -> 1604 bytes .../flag_southcarolina.gif | Bin 0 -> 1594 bytes .../flag_southdakota.gif | Bin 0 -> 1904 bytes .../flag_tennessee.gif | Bin 0 -> 1843 bytes .../flag_texas.gif | Bin 0 -> 1423 bytes .../flag_utah.gif | Bin 0 -> 2386 bytes .../flag_vermont.gif | Bin 0 -> 2124 bytes .../flag_virginia.gif | Bin 0 -> 2062 bytes .../flag_washington.gif | Bin 0 -> 1579 bytes .../flag_westvirginia.gif | Bin 0 -> 2018 bytes .../flag_wisconsin.gif | Bin 0 -> 2251 bytes .../flag_wyoming.gif | Bin 0 -> 1719 bytes .../ch21p748collectionViewFlowLayout2/main.m | 18 + .../states.txt | 50 ++ .../project.pbxproj | 20 - 141 files changed, 932 insertions(+), 22 deletions(-) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/AppDelegate.h (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/AppDelegate.m (100%) create mode 100644 bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/Base.lproj/Main.storyboard rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/Cell.h (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/Cell.m (100%) create mode 100644 bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/Cell.xib rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/Images.xcassets/AppIcon.appiconset/Contents.json (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/Images.xcassets/LaunchImage.launchimage/Contents.json (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/MyFlowLayout.h (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/MyFlowLayout.m (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/MyLayout.h (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/MyLayout.m (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/ViewController.h (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/ViewController.m (97%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/ViewController2.h (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/ViewController2.m (96%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Bridging-Header.h (100%) rename bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Info.plist => bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratchObjc-Info.plist (100%) rename bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Prefix.pch => bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratchObjc-Prefix.pch (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/en.lproj/InfoPlist.strings (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_alabama.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_alaska.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_arizona.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_arkansas.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_california.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_colorado.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_connecticut.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_delaware.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_florida.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_georgia.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_hawaii.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_idaho.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_illinois.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_indiana.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_iowa.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_kansas.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_kentucky.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_louisiana.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_maine.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_maryland.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_massachusetts.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_michigan.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_minnesota.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_mississippi.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_missouri.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_montana.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_nebraska.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_nevada.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_newhampshire.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_newjersey.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_newmexico.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_newyork.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_northcarolina.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_northdakota.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_ohio.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_oklahoma.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_oregon.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_pennsylvania.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_rhodeisland.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_southcarolina.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_southdakota.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_tennessee.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_texas.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_utah.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_vermont.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_virginia.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_washington.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_westvirginia.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_wisconsin.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/flag_wyoming.gif (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/main.m (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchObjc}/ch21p748collectionViewFlowLayout2/states.txt (100%) create mode 100644 bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewLayoutFromScratchObjc.xcodeproj/project.pbxproj create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/AppDelegate.h create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/AppDelegate.m rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchSwift}/ch21p748collectionViewFlowLayout2/Base.lproj/Main.storyboard (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchSwift}/ch21p748collectionViewFlowLayout2/Cell.swift (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchSwift}/ch21p748collectionViewFlowLayout2/Cell.xib (100%) create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/Images.xcassets/LaunchImage.launchimage/Contents.json rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchSwift}/ch21p748collectionViewFlowLayout2/MyFlowLayout.swift (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchSwift}/ch21p748collectionViewFlowLayout2/MyLayout.swift (100%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchSwift}/ch21p748collectionViewFlowLayout2/ViewController.swift (97%) rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchSwift}/ch21p748collectionViewFlowLayout2/ViewController2.swift (100%) create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Bridging-Header.h create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Info.plist create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Prefix.pch create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/en.lproj/InfoPlist.strings create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_alabama.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_alaska.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_arizona.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_arkansas.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_california.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_colorado.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_connecticut.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_delaware.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_florida.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_georgia.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_hawaii.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_idaho.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_illinois.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_indiana.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_iowa.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_kansas.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_kentucky.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_louisiana.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_maine.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_maryland.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_massachusetts.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_michigan.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_minnesota.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_mississippi.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_missouri.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_montana.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_nebraska.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_nevada.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_newhampshire.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_newjersey.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_newmexico.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_newyork.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_northcarolina.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_northdakota.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_ohio.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_oklahoma.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_oregon.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_pennsylvania.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_rhodeisland.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_southcarolina.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_southdakota.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_tennessee.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_texas.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_utah.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_vermont.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_virginia.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_washington.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_westvirginia.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_wisconsin.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_wyoming.gif create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/main.m create mode 100644 bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/states.txt rename {bk2ch08p467collectionViewLayoutFromScratch => bk2ch08p467collectionViewLayoutFromScratchSwift}/ch21p748collectionViewLayoutFromScratch.xcodeproj/project.pbxproj (94%) diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/AppDelegate.h b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/AppDelegate.h similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/AppDelegate.h rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/AppDelegate.h diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/AppDelegate.m b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/AppDelegate.m similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/AppDelegate.m rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/AppDelegate.m diff --git a/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/Base.lproj/Main.storyboard b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/Base.lproj/Main.storyboard new file mode 100644 index 000000000..127e75fa2 --- /dev/null +++ b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/Base.lproj/Main.storyboard @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/Cell.h b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/Cell.h similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/Cell.h rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/Cell.h diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/Cell.m b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/Cell.m similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/Cell.m rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/Cell.m diff --git a/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/Cell.xib b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/Cell.xib new file mode 100644 index 000000000..be6a09a27 --- /dev/null +++ b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/Cell.xib @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/Images.xcassets/AppIcon.appiconset/Contents.json b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/Images.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/Images.xcassets/AppIcon.appiconset/Contents.json rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/Images.xcassets/AppIcon.appiconset/Contents.json diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/Images.xcassets/LaunchImage.launchimage/Contents.json b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/Images.xcassets/LaunchImage.launchimage/Contents.json similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/Images.xcassets/LaunchImage.launchimage/Contents.json rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/Images.xcassets/LaunchImage.launchimage/Contents.json diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/MyFlowLayout.h b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/MyFlowLayout.h similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/MyFlowLayout.h rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/MyFlowLayout.h diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/MyFlowLayout.m b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/MyFlowLayout.m similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/MyFlowLayout.m rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/MyFlowLayout.m diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/MyLayout.h b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/MyLayout.h similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/MyLayout.h rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/MyLayout.h diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/MyLayout.m b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/MyLayout.m similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/MyLayout.m rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/MyLayout.m diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/ViewController.h b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/ViewController.h similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/ViewController.h rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/ViewController.h diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/ViewController.m b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/ViewController.m similarity index 97% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/ViewController.m rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/ViewController.m index fef2a936c..7474d2bbb 100644 --- a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/ViewController.m +++ b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/ViewController.m @@ -1,5 +1,10 @@ +/* + I've provided two independent versions of this example, one Swift, one Objective-C, + because the Swift version is prohibitively slow (especially on a device) + */ + #import "ViewController.h" #import "Cell.h" diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/ViewController2.h b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/ViewController2.h similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/ViewController2.h rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/ViewController2.h diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/ViewController2.m b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/ViewController2.m similarity index 96% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/ViewController2.m rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/ViewController2.m index f7403c553..7d289119b 100644 --- a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/ViewController2.m +++ b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/ViewController2.m @@ -1,8 +1,7 @@ #import "ViewController2.h" #import "Cell.h" -// #import "MyFlowLayout.h" -#import "ch21p748collectionViewLayoutFromScratch-Swift.h" +#import "MyFlowLayout.h" @interface ViewController2 () @end diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Bridging-Header.h b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Bridging-Header.h similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Bridging-Header.h rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Bridging-Header.h diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Info.plist b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratchObjc-Info.plist similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Info.plist rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratchObjc-Info.plist diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Prefix.pch b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratchObjc-Prefix.pch similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Prefix.pch rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratchObjc-Prefix.pch diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/en.lproj/InfoPlist.strings b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/en.lproj/InfoPlist.strings similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/en.lproj/InfoPlist.strings rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/en.lproj/InfoPlist.strings diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_alabama.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_alabama.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_alabama.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_alabama.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_alaska.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_alaska.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_alaska.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_alaska.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_arizona.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_arizona.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_arizona.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_arizona.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_arkansas.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_arkansas.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_arkansas.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_arkansas.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_california.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_california.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_california.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_california.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_colorado.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_colorado.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_colorado.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_colorado.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_connecticut.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_connecticut.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_connecticut.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_connecticut.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_delaware.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_delaware.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_delaware.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_delaware.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_florida.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_florida.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_florida.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_florida.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_georgia.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_georgia.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_georgia.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_georgia.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_hawaii.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_hawaii.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_hawaii.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_hawaii.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_idaho.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_idaho.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_idaho.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_idaho.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_illinois.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_illinois.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_illinois.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_illinois.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_indiana.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_indiana.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_indiana.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_indiana.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_iowa.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_iowa.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_iowa.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_iowa.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_kansas.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_kansas.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_kansas.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_kansas.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_kentucky.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_kentucky.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_kentucky.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_kentucky.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_louisiana.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_louisiana.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_louisiana.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_louisiana.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_maine.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_maine.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_maine.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_maine.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_maryland.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_maryland.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_maryland.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_maryland.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_massachusetts.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_massachusetts.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_massachusetts.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_massachusetts.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_michigan.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_michigan.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_michigan.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_michigan.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_minnesota.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_minnesota.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_minnesota.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_minnesota.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_mississippi.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_mississippi.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_mississippi.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_mississippi.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_missouri.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_missouri.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_missouri.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_missouri.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_montana.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_montana.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_montana.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_montana.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_nebraska.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_nebraska.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_nebraska.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_nebraska.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_nevada.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_nevada.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_nevada.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_nevada.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_newhampshire.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_newhampshire.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_newhampshire.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_newhampshire.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_newjersey.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_newjersey.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_newjersey.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_newjersey.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_newmexico.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_newmexico.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_newmexico.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_newmexico.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_newyork.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_newyork.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_newyork.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_newyork.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_northcarolina.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_northcarolina.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_northcarolina.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_northcarolina.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_northdakota.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_northdakota.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_northdakota.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_northdakota.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_ohio.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_ohio.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_ohio.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_ohio.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_oklahoma.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_oklahoma.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_oklahoma.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_oklahoma.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_oregon.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_oregon.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_oregon.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_oregon.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_pennsylvania.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_pennsylvania.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_pennsylvania.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_pennsylvania.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_rhodeisland.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_rhodeisland.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_rhodeisland.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_rhodeisland.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_southcarolina.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_southcarolina.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_southcarolina.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_southcarolina.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_southdakota.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_southdakota.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_southdakota.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_southdakota.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_tennessee.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_tennessee.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_tennessee.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_tennessee.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_texas.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_texas.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_texas.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_texas.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_utah.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_utah.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_utah.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_utah.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_vermont.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_vermont.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_vermont.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_vermont.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_virginia.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_virginia.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_virginia.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_virginia.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_washington.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_washington.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_washington.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_washington.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_westvirginia.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_westvirginia.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_westvirginia.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_westvirginia.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_wisconsin.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_wisconsin.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_wisconsin.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_wisconsin.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_wyoming.gif b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_wyoming.gif similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/flag_wyoming.gif rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/flag_wyoming.gif diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/main.m b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/main.m similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/main.m rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/main.m diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/states.txt b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/states.txt similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/states.txt rename to bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewFlowLayout2/states.txt diff --git a/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewLayoutFromScratchObjc.xcodeproj/project.pbxproj b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewLayoutFromScratchObjc.xcodeproj/project.pbxproj new file mode 100644 index 000000000..6cdf55c66 --- /dev/null +++ b/bk2ch08p467collectionViewLayoutFromScratchObjc/ch21p748collectionViewLayoutFromScratchObjc.xcodeproj/project.pbxproj @@ -0,0 +1,575 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 321B53AF1984A26B00C8037E /* MyLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = C9F1DEC71803378200AE4AE5 /* MyLayout.m */; }; + 321B53B01984A27200C8037E /* MyFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = C9F1DEC218031C5F00AE4AE5 /* MyFlowLayout.m */; }; + 321B53B11984A27900C8037E /* Cell.m in Sources */ = {isa = PBXBuildFile; fileRef = C9F1DEBD18031C0400AE4AE5 /* Cell.m */; }; + 321B53B21984A28000C8037E /* ViewController2.m in Sources */ = {isa = PBXBuildFile; fileRef = C9F1DECA1804942100AE4AE5 /* ViewController2.m */; }; + 321B53B31984A28700C8037E /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C9F1DE351803183800AE4AE5 /* ViewController.m */; }; + 32FB02BE19841FD5006889DD /* Cell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 32FB02BD19841FD5006889DD /* Cell.xib */; }; + C9F1DE201803183800AE4AE5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9F1DE1F1803183800AE4AE5 /* Foundation.framework */; }; + C9F1DE221803183800AE4AE5 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9F1DE211803183800AE4AE5 /* CoreGraphics.framework */; }; + C9F1DE241803183800AE4AE5 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9F1DE231803183800AE4AE5 /* UIKit.framework */; }; + C9F1DE2A1803183800AE4AE5 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE281803183800AE4AE5 /* InfoPlist.strings */; }; + C9F1DE2C1803183800AE4AE5 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C9F1DE2B1803183800AE4AE5 /* main.m */; }; + C9F1DE301803183800AE4AE5 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C9F1DE2F1803183800AE4AE5 /* AppDelegate.m */; }; + C9F1DE331803183800AE4AE5 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE311803183800AE4AE5 /* Main.storyboard */; }; + C9F1DE381803183800AE4AE5 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE371803183800AE4AE5 /* Images.xcassets */; }; + C9F1DE871803190900AE4AE5 /* flag_alabama.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE551803190900AE4AE5 /* flag_alabama.gif */; }; + C9F1DE881803190900AE4AE5 /* flag_alaska.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE561803190900AE4AE5 /* flag_alaska.gif */; }; + C9F1DE891803190900AE4AE5 /* flag_arizona.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE571803190900AE4AE5 /* flag_arizona.gif */; }; + C9F1DE8A1803190900AE4AE5 /* flag_arkansas.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE581803190900AE4AE5 /* flag_arkansas.gif */; }; + C9F1DE8B1803190900AE4AE5 /* flag_california.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE591803190900AE4AE5 /* flag_california.gif */; }; + C9F1DE8C1803190900AE4AE5 /* flag_colorado.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE5A1803190900AE4AE5 /* flag_colorado.gif */; }; + C9F1DE8D1803190900AE4AE5 /* flag_connecticut.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE5B1803190900AE4AE5 /* flag_connecticut.gif */; }; + C9F1DE8E1803190900AE4AE5 /* flag_delaware.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE5C1803190900AE4AE5 /* flag_delaware.gif */; }; + C9F1DE8F1803190900AE4AE5 /* flag_florida.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE5D1803190900AE4AE5 /* flag_florida.gif */; }; + C9F1DE901803190900AE4AE5 /* flag_georgia.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE5E1803190900AE4AE5 /* flag_georgia.gif */; }; + C9F1DE911803190900AE4AE5 /* flag_hawaii.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE5F1803190900AE4AE5 /* flag_hawaii.gif */; }; + C9F1DE921803190900AE4AE5 /* flag_idaho.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE601803190900AE4AE5 /* flag_idaho.gif */; }; + C9F1DE931803190900AE4AE5 /* flag_illinois.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE611803190900AE4AE5 /* flag_illinois.gif */; }; + C9F1DE941803190900AE4AE5 /* flag_indiana.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE621803190900AE4AE5 /* flag_indiana.gif */; }; + C9F1DE951803190900AE4AE5 /* flag_iowa.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE631803190900AE4AE5 /* flag_iowa.gif */; }; + C9F1DE961803190900AE4AE5 /* flag_kansas.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE641803190900AE4AE5 /* flag_kansas.gif */; }; + C9F1DE971803190900AE4AE5 /* flag_kentucky.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE651803190900AE4AE5 /* flag_kentucky.gif */; }; + C9F1DE981803190900AE4AE5 /* flag_louisiana.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE661803190900AE4AE5 /* flag_louisiana.gif */; }; + C9F1DE991803190900AE4AE5 /* flag_maine.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE671803190900AE4AE5 /* flag_maine.gif */; }; + C9F1DE9A1803190900AE4AE5 /* flag_maryland.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE681803190900AE4AE5 /* flag_maryland.gif */; }; + C9F1DE9B1803190900AE4AE5 /* flag_massachusetts.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE691803190900AE4AE5 /* flag_massachusetts.gif */; }; + C9F1DE9C1803190900AE4AE5 /* flag_michigan.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE6A1803190900AE4AE5 /* flag_michigan.gif */; }; + C9F1DE9D1803190900AE4AE5 /* flag_minnesota.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE6B1803190900AE4AE5 /* flag_minnesota.gif */; }; + C9F1DE9E1803190900AE4AE5 /* flag_mississippi.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE6C1803190900AE4AE5 /* flag_mississippi.gif */; }; + C9F1DE9F1803190900AE4AE5 /* flag_missouri.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE6D1803190900AE4AE5 /* flag_missouri.gif */; }; + C9F1DEA01803190900AE4AE5 /* flag_montana.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE6E1803190900AE4AE5 /* flag_montana.gif */; }; + C9F1DEA11803190900AE4AE5 /* flag_nebraska.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE6F1803190900AE4AE5 /* flag_nebraska.gif */; }; + C9F1DEA21803190900AE4AE5 /* flag_nevada.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE701803190900AE4AE5 /* flag_nevada.gif */; }; + C9F1DEA31803190900AE4AE5 /* flag_newhampshire.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE711803190900AE4AE5 /* flag_newhampshire.gif */; }; + C9F1DEA41803190900AE4AE5 /* flag_newjersey.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE721803190900AE4AE5 /* flag_newjersey.gif */; }; + C9F1DEA51803190900AE4AE5 /* flag_newmexico.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE731803190900AE4AE5 /* flag_newmexico.gif */; }; + C9F1DEA61803190900AE4AE5 /* flag_newyork.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE741803190900AE4AE5 /* flag_newyork.gif */; }; + C9F1DEA71803190900AE4AE5 /* flag_northcarolina.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE751803190900AE4AE5 /* flag_northcarolina.gif */; }; + C9F1DEA81803190900AE4AE5 /* flag_northdakota.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE761803190900AE4AE5 /* flag_northdakota.gif */; }; + C9F1DEA91803190900AE4AE5 /* flag_ohio.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE771803190900AE4AE5 /* flag_ohio.gif */; }; + C9F1DEAA1803190900AE4AE5 /* flag_oklahoma.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE781803190900AE4AE5 /* flag_oklahoma.gif */; }; + C9F1DEAB1803190900AE4AE5 /* flag_oregon.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE791803190900AE4AE5 /* flag_oregon.gif */; }; + C9F1DEAC1803190900AE4AE5 /* flag_pennsylvania.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE7A1803190900AE4AE5 /* flag_pennsylvania.gif */; }; + C9F1DEAD1803190900AE4AE5 /* flag_rhodeisland.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE7B1803190900AE4AE5 /* flag_rhodeisland.gif */; }; + C9F1DEAE1803190900AE4AE5 /* flag_southcarolina.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE7C1803190900AE4AE5 /* flag_southcarolina.gif */; }; + C9F1DEAF1803190900AE4AE5 /* flag_southdakota.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE7D1803190900AE4AE5 /* flag_southdakota.gif */; }; + C9F1DEB01803190900AE4AE5 /* flag_tennessee.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE7E1803190900AE4AE5 /* flag_tennessee.gif */; }; + C9F1DEB11803190900AE4AE5 /* flag_texas.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE7F1803190900AE4AE5 /* flag_texas.gif */; }; + C9F1DEB21803190900AE4AE5 /* flag_utah.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE801803190900AE4AE5 /* flag_utah.gif */; }; + C9F1DEB31803190900AE4AE5 /* flag_vermont.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE811803190900AE4AE5 /* flag_vermont.gif */; }; + C9F1DEB41803190900AE4AE5 /* flag_virginia.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE821803190900AE4AE5 /* flag_virginia.gif */; }; + C9F1DEB51803190900AE4AE5 /* flag_washington.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE831803190900AE4AE5 /* flag_washington.gif */; }; + C9F1DEB61803190900AE4AE5 /* flag_westvirginia.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE841803190900AE4AE5 /* flag_westvirginia.gif */; }; + C9F1DEB71803190900AE4AE5 /* flag_wisconsin.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE851803190900AE4AE5 /* flag_wisconsin.gif */; }; + C9F1DEB81803190900AE4AE5 /* flag_wyoming.gif in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DE861803190900AE4AE5 /* flag_wyoming.gif */; }; + C9F1DEC018031C5200AE4AE5 /* states.txt in Resources */ = {isa = PBXBuildFile; fileRef = C9F1DEBF18031C5200AE4AE5 /* states.txt */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 32FB02BD19841FD5006889DD /* Cell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = Cell.xib; sourceTree = ""; }; + 32FB02BF1984218B006889DD /* ch21p748collectionViewLayoutFromScratch-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ch21p748collectionViewLayoutFromScratch-Bridging-Header.h"; sourceTree = ""; }; + C9F1DE1C1803183800AE4AE5 /* ch21p748collectionViewLayoutFromScratchObjc.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ch21p748collectionViewLayoutFromScratchObjc.app; sourceTree = BUILT_PRODUCTS_DIR; }; + C9F1DE1F1803183800AE4AE5 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + C9F1DE211803183800AE4AE5 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + C9F1DE231803183800AE4AE5 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + C9F1DE271803183800AE4AE5 /* ch21p748collectionViewLayoutFromScratchObjc-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "ch21p748collectionViewLayoutFromScratchObjc-Info.plist"; sourceTree = ""; }; + C9F1DE291803183800AE4AE5 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + C9F1DE2B1803183800AE4AE5 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + C9F1DE2D1803183800AE4AE5 /* ch21p748collectionViewLayoutFromScratchObjc-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ch21p748collectionViewLayoutFromScratchObjc-Prefix.pch"; sourceTree = ""; }; + C9F1DE2E1803183800AE4AE5 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + C9F1DE2F1803183800AE4AE5 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + C9F1DE321803183800AE4AE5 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + C9F1DE341803183800AE4AE5 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + C9F1DE351803183800AE4AE5 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + C9F1DE371803183800AE4AE5 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + C9F1DE3E1803183800AE4AE5 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; + C9F1DE551803190900AE4AE5 /* flag_alabama.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_alabama.gif; sourceTree = ""; }; + C9F1DE561803190900AE4AE5 /* flag_alaska.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_alaska.gif; sourceTree = ""; }; + C9F1DE571803190900AE4AE5 /* flag_arizona.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_arizona.gif; sourceTree = ""; }; + C9F1DE581803190900AE4AE5 /* flag_arkansas.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_arkansas.gif; sourceTree = ""; }; + C9F1DE591803190900AE4AE5 /* flag_california.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_california.gif; sourceTree = ""; }; + C9F1DE5A1803190900AE4AE5 /* flag_colorado.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_colorado.gif; sourceTree = ""; }; + C9F1DE5B1803190900AE4AE5 /* flag_connecticut.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_connecticut.gif; sourceTree = ""; }; + C9F1DE5C1803190900AE4AE5 /* flag_delaware.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_delaware.gif; sourceTree = ""; }; + C9F1DE5D1803190900AE4AE5 /* flag_florida.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_florida.gif; sourceTree = ""; }; + C9F1DE5E1803190900AE4AE5 /* flag_georgia.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_georgia.gif; sourceTree = ""; }; + C9F1DE5F1803190900AE4AE5 /* flag_hawaii.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_hawaii.gif; sourceTree = ""; }; + C9F1DE601803190900AE4AE5 /* flag_idaho.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_idaho.gif; sourceTree = ""; }; + C9F1DE611803190900AE4AE5 /* flag_illinois.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_illinois.gif; sourceTree = ""; }; + C9F1DE621803190900AE4AE5 /* flag_indiana.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_indiana.gif; sourceTree = ""; }; + C9F1DE631803190900AE4AE5 /* flag_iowa.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_iowa.gif; sourceTree = ""; }; + C9F1DE641803190900AE4AE5 /* flag_kansas.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_kansas.gif; sourceTree = ""; }; + C9F1DE651803190900AE4AE5 /* flag_kentucky.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_kentucky.gif; sourceTree = ""; }; + C9F1DE661803190900AE4AE5 /* flag_louisiana.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_louisiana.gif; sourceTree = ""; }; + C9F1DE671803190900AE4AE5 /* flag_maine.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_maine.gif; sourceTree = ""; }; + C9F1DE681803190900AE4AE5 /* flag_maryland.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_maryland.gif; sourceTree = ""; }; + C9F1DE691803190900AE4AE5 /* flag_massachusetts.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_massachusetts.gif; sourceTree = ""; }; + C9F1DE6A1803190900AE4AE5 /* flag_michigan.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_michigan.gif; sourceTree = ""; }; + C9F1DE6B1803190900AE4AE5 /* flag_minnesota.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_minnesota.gif; sourceTree = ""; }; + C9F1DE6C1803190900AE4AE5 /* flag_mississippi.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_mississippi.gif; sourceTree = ""; }; + C9F1DE6D1803190900AE4AE5 /* flag_missouri.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_missouri.gif; sourceTree = ""; }; + C9F1DE6E1803190900AE4AE5 /* flag_montana.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_montana.gif; sourceTree = ""; }; + C9F1DE6F1803190900AE4AE5 /* flag_nebraska.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_nebraska.gif; sourceTree = ""; }; + C9F1DE701803190900AE4AE5 /* flag_nevada.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_nevada.gif; sourceTree = ""; }; + C9F1DE711803190900AE4AE5 /* flag_newhampshire.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_newhampshire.gif; sourceTree = ""; }; + C9F1DE721803190900AE4AE5 /* flag_newjersey.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_newjersey.gif; sourceTree = ""; }; + C9F1DE731803190900AE4AE5 /* flag_newmexico.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_newmexico.gif; sourceTree = ""; }; + C9F1DE741803190900AE4AE5 /* flag_newyork.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_newyork.gif; sourceTree = ""; }; + C9F1DE751803190900AE4AE5 /* flag_northcarolina.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_northcarolina.gif; sourceTree = ""; }; + C9F1DE761803190900AE4AE5 /* flag_northdakota.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_northdakota.gif; sourceTree = ""; }; + C9F1DE771803190900AE4AE5 /* flag_ohio.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_ohio.gif; sourceTree = ""; }; + C9F1DE781803190900AE4AE5 /* flag_oklahoma.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_oklahoma.gif; sourceTree = ""; }; + C9F1DE791803190900AE4AE5 /* flag_oregon.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_oregon.gif; sourceTree = ""; }; + C9F1DE7A1803190900AE4AE5 /* flag_pennsylvania.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_pennsylvania.gif; sourceTree = ""; }; + C9F1DE7B1803190900AE4AE5 /* flag_rhodeisland.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_rhodeisland.gif; sourceTree = ""; }; + C9F1DE7C1803190900AE4AE5 /* flag_southcarolina.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_southcarolina.gif; sourceTree = ""; }; + C9F1DE7D1803190900AE4AE5 /* flag_southdakota.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_southdakota.gif; sourceTree = ""; }; + C9F1DE7E1803190900AE4AE5 /* flag_tennessee.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_tennessee.gif; sourceTree = ""; }; + C9F1DE7F1803190900AE4AE5 /* flag_texas.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_texas.gif; sourceTree = ""; }; + C9F1DE801803190900AE4AE5 /* flag_utah.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_utah.gif; sourceTree = ""; }; + C9F1DE811803190900AE4AE5 /* flag_vermont.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_vermont.gif; sourceTree = ""; }; + C9F1DE821803190900AE4AE5 /* flag_virginia.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_virginia.gif; sourceTree = ""; }; + C9F1DE831803190900AE4AE5 /* flag_washington.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_washington.gif; sourceTree = ""; }; + C9F1DE841803190900AE4AE5 /* flag_westvirginia.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_westvirginia.gif; sourceTree = ""; }; + C9F1DE851803190900AE4AE5 /* flag_wisconsin.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_wisconsin.gif; sourceTree = ""; }; + C9F1DE861803190900AE4AE5 /* flag_wyoming.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_wyoming.gif; sourceTree = ""; }; + C9F1DEBC18031C0400AE4AE5 /* Cell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Cell.h; sourceTree = ""; }; + C9F1DEBD18031C0400AE4AE5 /* Cell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Cell.m; sourceTree = ""; }; + C9F1DEBF18031C5200AE4AE5 /* states.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = states.txt; sourceTree = ""; }; + C9F1DEC118031C5F00AE4AE5 /* MyFlowLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyFlowLayout.h; sourceTree = ""; }; + C9F1DEC218031C5F00AE4AE5 /* MyFlowLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyFlowLayout.m; sourceTree = ""; }; + C9F1DEC61803378200AE4AE5 /* MyLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyLayout.h; sourceTree = ""; }; + C9F1DEC71803378200AE4AE5 /* MyLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyLayout.m; sourceTree = ""; }; + C9F1DEC91804942100AE4AE5 /* ViewController2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewController2.h; sourceTree = ""; }; + C9F1DECA1804942100AE4AE5 /* ViewController2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewController2.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + C9F1DE191803183800AE4AE5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + C9F1DE221803183800AE4AE5 /* CoreGraphics.framework in Frameworks */, + C9F1DE241803183800AE4AE5 /* UIKit.framework in Frameworks */, + C9F1DE201803183800AE4AE5 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + C9F1DE131803183800AE4AE5 = { + isa = PBXGroup; + children = ( + C9F1DE251803183800AE4AE5 /* ch21p748collectionViewLayoutFromScratch */, + C9F1DE1E1803183800AE4AE5 /* Frameworks */, + C9F1DE1D1803183800AE4AE5 /* Products */, + ); + sourceTree = ""; + }; + C9F1DE1D1803183800AE4AE5 /* Products */ = { + isa = PBXGroup; + children = ( + C9F1DE1C1803183800AE4AE5 /* ch21p748collectionViewLayoutFromScratchObjc.app */, + ); + name = Products; + sourceTree = ""; + }; + C9F1DE1E1803183800AE4AE5 /* Frameworks */ = { + isa = PBXGroup; + children = ( + C9F1DE1F1803183800AE4AE5 /* Foundation.framework */, + C9F1DE211803183800AE4AE5 /* CoreGraphics.framework */, + C9F1DE231803183800AE4AE5 /* UIKit.framework */, + C9F1DE3E1803183800AE4AE5 /* XCTest.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + C9F1DE251803183800AE4AE5 /* ch21p748collectionViewLayoutFromScratch */ = { + isa = PBXGroup; + children = ( + C9F1DE2E1803183800AE4AE5 /* AppDelegate.h */, + C9F1DE2F1803183800AE4AE5 /* AppDelegate.m */, + C9F1DE311803183800AE4AE5 /* Main.storyboard */, + C9F1DE341803183800AE4AE5 /* ViewController.h */, + C9F1DE351803183800AE4AE5 /* ViewController.m */, + C9F1DEC91804942100AE4AE5 /* ViewController2.h */, + C9F1DECA1804942100AE4AE5 /* ViewController2.m */, + C9F1DEBC18031C0400AE4AE5 /* Cell.h */, + C9F1DEBD18031C0400AE4AE5 /* Cell.m */, + 32FB02BD19841FD5006889DD /* Cell.xib */, + C9F1DEC118031C5F00AE4AE5 /* MyFlowLayout.h */, + C9F1DEC218031C5F00AE4AE5 /* MyFlowLayout.m */, + C9F1DEC61803378200AE4AE5 /* MyLayout.h */, + C9F1DEC71803378200AE4AE5 /* MyLayout.m */, + C9F1DEBF18031C5200AE4AE5 /* states.txt */, + C9F1DE54180318F800AE4AE5 /* Flags */, + C9F1DE371803183800AE4AE5 /* Images.xcassets */, + C9F1DE261803183800AE4AE5 /* Supporting Files */, + 32FB02BF1984218B006889DD /* ch21p748collectionViewLayoutFromScratch-Bridging-Header.h */, + ); + name = ch21p748collectionViewLayoutFromScratch; + path = ch21p748collectionViewFlowLayout2; + sourceTree = ""; + }; + C9F1DE261803183800AE4AE5 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + C9F1DE271803183800AE4AE5 /* ch21p748collectionViewLayoutFromScratchObjc-Info.plist */, + C9F1DE281803183800AE4AE5 /* InfoPlist.strings */, + C9F1DE2B1803183800AE4AE5 /* main.m */, + C9F1DE2D1803183800AE4AE5 /* ch21p748collectionViewLayoutFromScratchObjc-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + C9F1DE54180318F800AE4AE5 /* Flags */ = { + isa = PBXGroup; + children = ( + C9F1DE551803190900AE4AE5 /* flag_alabama.gif */, + C9F1DE561803190900AE4AE5 /* flag_alaska.gif */, + C9F1DE571803190900AE4AE5 /* flag_arizona.gif */, + C9F1DE581803190900AE4AE5 /* flag_arkansas.gif */, + C9F1DE591803190900AE4AE5 /* flag_california.gif */, + C9F1DE5A1803190900AE4AE5 /* flag_colorado.gif */, + C9F1DE5B1803190900AE4AE5 /* flag_connecticut.gif */, + C9F1DE5C1803190900AE4AE5 /* flag_delaware.gif */, + C9F1DE5D1803190900AE4AE5 /* flag_florida.gif */, + C9F1DE5E1803190900AE4AE5 /* flag_georgia.gif */, + C9F1DE5F1803190900AE4AE5 /* flag_hawaii.gif */, + C9F1DE601803190900AE4AE5 /* flag_idaho.gif */, + C9F1DE611803190900AE4AE5 /* flag_illinois.gif */, + C9F1DE621803190900AE4AE5 /* flag_indiana.gif */, + C9F1DE631803190900AE4AE5 /* flag_iowa.gif */, + C9F1DE641803190900AE4AE5 /* flag_kansas.gif */, + C9F1DE651803190900AE4AE5 /* flag_kentucky.gif */, + C9F1DE661803190900AE4AE5 /* flag_louisiana.gif */, + C9F1DE671803190900AE4AE5 /* flag_maine.gif */, + C9F1DE681803190900AE4AE5 /* flag_maryland.gif */, + C9F1DE691803190900AE4AE5 /* flag_massachusetts.gif */, + C9F1DE6A1803190900AE4AE5 /* flag_michigan.gif */, + C9F1DE6B1803190900AE4AE5 /* flag_minnesota.gif */, + C9F1DE6C1803190900AE4AE5 /* flag_mississippi.gif */, + C9F1DE6D1803190900AE4AE5 /* flag_missouri.gif */, + C9F1DE6E1803190900AE4AE5 /* flag_montana.gif */, + C9F1DE6F1803190900AE4AE5 /* flag_nebraska.gif */, + C9F1DE701803190900AE4AE5 /* flag_nevada.gif */, + C9F1DE711803190900AE4AE5 /* flag_newhampshire.gif */, + C9F1DE721803190900AE4AE5 /* flag_newjersey.gif */, + C9F1DE731803190900AE4AE5 /* flag_newmexico.gif */, + C9F1DE741803190900AE4AE5 /* flag_newyork.gif */, + C9F1DE751803190900AE4AE5 /* flag_northcarolina.gif */, + C9F1DE761803190900AE4AE5 /* flag_northdakota.gif */, + C9F1DE771803190900AE4AE5 /* flag_ohio.gif */, + C9F1DE781803190900AE4AE5 /* flag_oklahoma.gif */, + C9F1DE791803190900AE4AE5 /* flag_oregon.gif */, + C9F1DE7A1803190900AE4AE5 /* flag_pennsylvania.gif */, + C9F1DE7B1803190900AE4AE5 /* flag_rhodeisland.gif */, + C9F1DE7C1803190900AE4AE5 /* flag_southcarolina.gif */, + C9F1DE7D1803190900AE4AE5 /* flag_southdakota.gif */, + C9F1DE7E1803190900AE4AE5 /* flag_tennessee.gif */, + C9F1DE7F1803190900AE4AE5 /* flag_texas.gif */, + C9F1DE801803190900AE4AE5 /* flag_utah.gif */, + C9F1DE811803190900AE4AE5 /* flag_vermont.gif */, + C9F1DE821803190900AE4AE5 /* flag_virginia.gif */, + C9F1DE831803190900AE4AE5 /* flag_washington.gif */, + C9F1DE841803190900AE4AE5 /* flag_westvirginia.gif */, + C9F1DE851803190900AE4AE5 /* flag_wisconsin.gif */, + C9F1DE861803190900AE4AE5 /* flag_wyoming.gif */, + ); + name = Flags; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + C9F1DE1B1803183800AE4AE5 /* ch21p748collectionViewLayoutFromScratchObjc */ = { + isa = PBXNativeTarget; + buildConfigurationList = C9F1DE4E1803183800AE4AE5 /* Build configuration list for PBXNativeTarget "ch21p748collectionViewLayoutFromScratchObjc" */; + buildPhases = ( + C9F1DE181803183800AE4AE5 /* Sources */, + C9F1DE191803183800AE4AE5 /* Frameworks */, + C9F1DE1A1803183800AE4AE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ch21p748collectionViewLayoutFromScratchObjc; + productName = ch21p748collectionViewFlowLayout2; + productReference = C9F1DE1C1803183800AE4AE5 /* ch21p748collectionViewLayoutFromScratchObjc.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + C9F1DE141803183800AE4AE5 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0500; + ORGANIZATIONNAME = "Matt Neuburg"; + }; + buildConfigurationList = C9F1DE171803183800AE4AE5 /* Build configuration list for PBXProject "ch21p748collectionViewLayoutFromScratchObjc" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = C9F1DE131803183800AE4AE5; + productRefGroup = C9F1DE1D1803183800AE4AE5 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + C9F1DE1B1803183800AE4AE5 /* ch21p748collectionViewLayoutFromScratchObjc */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + C9F1DE1A1803183800AE4AE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C9F1DEB71803190900AE4AE5 /* flag_wisconsin.gif in Resources */, + C9F1DE8D1803190900AE4AE5 /* flag_connecticut.gif in Resources */, + C9F1DE931803190900AE4AE5 /* flag_illinois.gif in Resources */, + C9F1DE8B1803190900AE4AE5 /* flag_california.gif in Resources */, + C9F1DEB21803190900AE4AE5 /* flag_utah.gif in Resources */, + C9F1DEA41803190900AE4AE5 /* flag_newjersey.gif in Resources */, + C9F1DE9B1803190900AE4AE5 /* flag_massachusetts.gif in Resources */, + C9F1DE961803190900AE4AE5 /* flag_kansas.gif in Resources */, + C9F1DE871803190900AE4AE5 /* flag_alabama.gif in Resources */, + C9F1DEB31803190900AE4AE5 /* flag_vermont.gif in Resources */, + C9F1DEA71803190900AE4AE5 /* flag_northcarolina.gif in Resources */, + C9F1DE951803190900AE4AE5 /* flag_iowa.gif in Resources */, + C9F1DEB41803190900AE4AE5 /* flag_virginia.gif in Resources */, + C9F1DE921803190900AE4AE5 /* flag_idaho.gif in Resources */, + C9F1DEAD1803190900AE4AE5 /* flag_rhodeisland.gif in Resources */, + C9F1DE8C1803190900AE4AE5 /* flag_colorado.gif in Resources */, + C9F1DEA81803190900AE4AE5 /* flag_northdakota.gif in Resources */, + C9F1DE891803190900AE4AE5 /* flag_arizona.gif in Resources */, + C9F1DEA01803190900AE4AE5 /* flag_montana.gif in Resources */, + C9F1DE381803183800AE4AE5 /* Images.xcassets in Resources */, + C9F1DE2A1803183800AE4AE5 /* InfoPlist.strings in Resources */, + C9F1DEB51803190900AE4AE5 /* flag_washington.gif in Resources */, + C9F1DE331803183800AE4AE5 /* Main.storyboard in Resources */, + C9F1DE981803190900AE4AE5 /* flag_louisiana.gif in Resources */, + C9F1DE9C1803190900AE4AE5 /* flag_michigan.gif in Resources */, + C9F1DEA91803190900AE4AE5 /* flag_ohio.gif in Resources */, + C9F1DE8A1803190900AE4AE5 /* flag_arkansas.gif in Resources */, + C9F1DE8E1803190900AE4AE5 /* flag_delaware.gif in Resources */, + C9F1DEAB1803190900AE4AE5 /* flag_oregon.gif in Resources */, + C9F1DEAF1803190900AE4AE5 /* flag_southdakota.gif in Resources */, + C9F1DE9D1803190900AE4AE5 /* flag_minnesota.gif in Resources */, + C9F1DEA51803190900AE4AE5 /* flag_newmexico.gif in Resources */, + C9F1DEB81803190900AE4AE5 /* flag_wyoming.gif in Resources */, + C9F1DE901803190900AE4AE5 /* flag_georgia.gif in Resources */, + C9F1DE9E1803190900AE4AE5 /* flag_mississippi.gif in Resources */, + C9F1DEA11803190900AE4AE5 /* flag_nebraska.gif in Resources */, + 32FB02BE19841FD5006889DD /* Cell.xib in Resources */, + C9F1DEB11803190900AE4AE5 /* flag_texas.gif in Resources */, + C9F1DE8F1803190900AE4AE5 /* flag_florida.gif in Resources */, + C9F1DEAC1803190900AE4AE5 /* flag_pennsylvania.gif in Resources */, + C9F1DEAA1803190900AE4AE5 /* flag_oklahoma.gif in Resources */, + C9F1DE9F1803190900AE4AE5 /* flag_missouri.gif in Resources */, + C9F1DE971803190900AE4AE5 /* flag_kentucky.gif in Resources */, + C9F1DEA61803190900AE4AE5 /* flag_newyork.gif in Resources */, + C9F1DEA21803190900AE4AE5 /* flag_nevada.gif in Resources */, + C9F1DE941803190900AE4AE5 /* flag_indiana.gif in Resources */, + C9F1DEB61803190900AE4AE5 /* flag_westvirginia.gif in Resources */, + C9F1DE991803190900AE4AE5 /* flag_maine.gif in Resources */, + C9F1DE881803190900AE4AE5 /* flag_alaska.gif in Resources */, + C9F1DEC018031C5200AE4AE5 /* states.txt in Resources */, + C9F1DEA31803190900AE4AE5 /* flag_newhampshire.gif in Resources */, + C9F1DE9A1803190900AE4AE5 /* flag_maryland.gif in Resources */, + C9F1DE911803190900AE4AE5 /* flag_hawaii.gif in Resources */, + C9F1DEB01803190900AE4AE5 /* flag_tennessee.gif in Resources */, + C9F1DEAE1803190900AE4AE5 /* flag_southcarolina.gif in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + C9F1DE181803183800AE4AE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 321B53B31984A28700C8037E /* ViewController.m in Sources */, + 321B53B21984A28000C8037E /* ViewController2.m in Sources */, + 321B53AF1984A26B00C8037E /* MyLayout.m in Sources */, + C9F1DE301803183800AE4AE5 /* AppDelegate.m in Sources */, + C9F1DE2C1803183800AE4AE5 /* main.m in Sources */, + 321B53B01984A27200C8037E /* MyFlowLayout.m in Sources */, + 321B53B11984A27900C8037E /* Cell.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + C9F1DE281803183800AE4AE5 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + C9F1DE291803183800AE4AE5 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + C9F1DE311803183800AE4AE5 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + C9F1DE321803183800AE4AE5 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + C9F1DE4C1803183800AE4AE5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; + 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_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + 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; + SDKROOT = iphoneos; + }; + name = Debug; + }; + C9F1DE4D1803183800AE4AE5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; + 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_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + 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; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + C9F1DE4F1803183800AE4AE5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + CLANG_ENABLE_MODULES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratchObjc-Prefix.pch"; + INFOPLIST_FILE = "ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratchObjc-Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + ONLY_ACTIVE_ARCH = NO; + PRODUCT_NAME = ch21p748collectionViewLayoutFromScratchObjc; + SWIFT_OBJC_BRIDGING_HEADER = "ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + C9F1DE501803183800AE4AE5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD)"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + CLANG_ENABLE_MODULES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratchObjc-Prefix.pch"; + INFOPLIST_FILE = "ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratchObjc-Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + ONLY_ACTIVE_ARCH = NO; + PRODUCT_NAME = ch21p748collectionViewLayoutFromScratchObjc; + SWIFT_OBJC_BRIDGING_HEADER = "ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Bridging-Header.h"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + C9F1DE171803183800AE4AE5 /* Build configuration list for PBXProject "ch21p748collectionViewLayoutFromScratchObjc" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C9F1DE4C1803183800AE4AE5 /* Debug */, + C9F1DE4D1803183800AE4AE5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C9F1DE4E1803183800AE4AE5 /* Build configuration list for PBXNativeTarget "ch21p748collectionViewLayoutFromScratchObjc" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C9F1DE4F1803183800AE4AE5 /* Debug */, + C9F1DE501803183800AE4AE5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = C9F1DE141803183800AE4AE5 /* Project object */; +} diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/AppDelegate.h b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/AppDelegate.h new file mode 100644 index 000000000..21f5cd392 --- /dev/null +++ b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/AppDelegate.h @@ -0,0 +1,9 @@ + + +#import + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + +@end diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/AppDelegate.m b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/AppDelegate.m new file mode 100644 index 000000000..f5bfca3ef --- /dev/null +++ b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/AppDelegate.m @@ -0,0 +1,14 @@ + + +#import "AppDelegate.h" + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + // Override point for customization after application launch. + return YES; +} + + +@end diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/Base.lproj/Main.storyboard b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/Base.lproj/Main.storyboard similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/Base.lproj/Main.storyboard rename to bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/Base.lproj/Main.storyboard diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/Cell.swift b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/Cell.swift similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/Cell.swift rename to bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/Cell.swift diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/Cell.xib b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/Cell.xib similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/Cell.xib rename to bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/Cell.xib diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/Images.xcassets/AppIcon.appiconset/Contents.json b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..a396706db --- /dev/null +++ b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/Images.xcassets/LaunchImage.launchimage/Contents.json b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/Images.xcassets/LaunchImage.launchimage/Contents.json new file mode 100644 index 000000000..c79ebd3ad --- /dev/null +++ b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/Images.xcassets/LaunchImage.launchimage/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "subtype" : "retina4", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/MyFlowLayout.swift b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/MyFlowLayout.swift similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/MyFlowLayout.swift rename to bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/MyFlowLayout.swift diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/MyLayout.swift b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/MyLayout.swift similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/MyLayout.swift rename to bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/MyLayout.swift diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/ViewController.swift b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/ViewController.swift similarity index 97% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/ViewController.swift rename to bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/ViewController.swift index 179fcccca..9b6266bc4 100644 --- a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/ViewController.swift +++ b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/ViewController.swift @@ -2,6 +2,12 @@ import UIKit +/* +I've provided two independent versions of this example, one Swift, one Objective-C, +because the Swift version is prohibitively slow (especially on a device) +*/ + + class ViewController : UICollectionViewController { var sectionNames = [String]() diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/ViewController2.swift b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/ViewController2.swift similarity index 100% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewFlowLayout2/ViewController2.swift rename to bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/ViewController2.swift diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Bridging-Header.h b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Bridging-Header.h new file mode 100644 index 000000000..1b2cb5d6d --- /dev/null +++ b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Bridging-Header.h @@ -0,0 +1,4 @@ +// +// Use this file to import your target's public headers that you would like to expose to Swift. +// + diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Info.plist b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Info.plist new file mode 100644 index 000000000..b29ba46ea --- /dev/null +++ b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Info.plist @@ -0,0 +1,40 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + ${PRODUCT_NAME} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + com.neuburg.matt.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Prefix.pch b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Prefix.pch new file mode 100644 index 000000000..82a2bb450 --- /dev/null +++ b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/ch21p748collectionViewLayoutFromScratch-Prefix.pch @@ -0,0 +1,16 @@ +// +// 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/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/en.lproj/InfoPlist.strings b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/en.lproj/InfoPlist.strings new file mode 100644 index 000000000..477b28ff8 --- /dev/null +++ b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_alabama.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_alabama.gif new file mode 100644 index 0000000000000000000000000000000000000000..a42591d9a00f12fca16d813e38a9610a689595b2 GIT binary patch literal 1531 zcmZ?wbhEHbv|-R-XlG!MVPNoPVDMpJ@Z;g}7ZHi}^o)&-jf;zmkB>jYz;K3<@eC8w z85WkaY;0%Q+0SxtoaN*^$HjGyoBJF;|9O7?a{>bA1q3dLi(inGyeK7gQCj+<{lvrv znVAoBavl{GJ+7#DTv_?FzW!-L!_%gwr_IgJdwX9@nDBDiwAXXzzFD~N&7wtbSFU`& zWy^a(mo9y~a^=Updq3{q z|M~3MujkKyy?F8K)vMoc-~N98{?Escf4+YG`|aD`@8AFa`0@AW&wsyu{rmm<-=9DK z{{H><@8AFb{~1QXa1Q~+pDaKx{%6nuc@&f<960_nFmgy}Bseg#a0qL~oY=7Na61PV zkAeon0Y-g^-3~hsIyyG>D~N`4Y-Cw{aTdUaZG=e?X#Bc(m`^*bq+-D=1t%^w)48{f>|ENx$rd6y z;m1bTHPQOfbrU{BOlj;?%H1oW;4ozsn`G!cuCPegHnw%b91qS!9(7}1Cl+PFIeSz0 zWHGTFWg7%5GA|!g->nenIDIvfsE0=LwcQd+rzxt-1f&Waa!+3#TGQeXedQphQq&B# z1-BNkOwe9Exq2s4iwpBA#6685 zI}U_0tH~rbl*rpAGzmt`=#&+6oAKd*_r<*`>T}Dq+LzC(IrKBA@Hp!$vEp-%&sAr{ z^hPdQq_%LST48Qo*tN*awOduo3eTF}j;)+JPR0jgE<8E=SCw zbGPeGy`2~GlT9XA;*`hYUe|{!l>6#r`M0nT?jrUW&woPDv8Q*3KOvzo0$ zVxVx?i)p)h@2YP|(XUFBOq*5sY|5IimVbilZuFgQsb}Dtaj8bC@W>N)rHLtO-g=^< zmwl$(6^T1wKeb$L>FcfE<7#5xTn!JDJ~Kgksd}j4;lvQtv={DIBHgz{+$wxN*MUWn R<>J+dbX`GL1{M|uYXF7}=c@n! literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_alaska.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_alaska.gif new file mode 100644 index 0000000000000000000000000000000000000000..47fac7507381f3488cf07ccc6733ef07dc885542 GIT binary patch literal 1619 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 literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_arkansas.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_arkansas.gif new file mode 100644 index 0000000000000000000000000000000000000000..1b3bcad4dc1baf59f1f417c6d304e806a80d82ec GIT binary patch literal 2162 zcmeH``%_ct9f#kO>w#Q2iChjL?B+-;q)_BkWC<4=0u3011!O^xVraNWoj}CurqfBn zA;NB)qDBE5XW1@speN{L#DYm`chvdmH@QJ0afCb3pas;fz>t!k`HEg`8^ldZO?HCDC8roogNtV~0O zj>N9RlseLSyB?G4F{Pdi{ivR>>xoeUl@l0=k|5hcGHF4j7F2E_!#Zh2rB>2bht=k= zA-E02ZDiOTc0^)Fa61`xkA2iLibzIDk9tQZy^{zwiAW~NaCjXs=0Gq984kb0Pcmf`8zzZW@81<6j5BOokPujof4{Qbi8~{iFMgn99wl)F0xw*9kz!reFUT=GA zdz(BdsqO7o+pk`|0)W*2_rH9BBtY)oF>$YJ0^BgL0Yp2>k;7j zw}MlpU7^;!1rOLa#vjj|Pb;{UcVqph^E@U;h;|33r>Rkm8OmEQkIkVoxet*`>oUN~ zf4J1Mi#gkiRXv#KSyZs!Llc+WBa7y40x&ZyJ#9`v2vz>ZrP+ZGoAzb%g|ZSS<#G%M z4H|Z@%Q~SjVyHCp#&1u&Kcy=?KC57MLHsMrXNo?Y5p=(`@8@&#zQ)`856jpn;$m6v zMqiy+`HlT!h~M;L=aZa&j6)HLY%cqSwjut+#&H>CleZgu$}VMWZDgL?3hb#3Zhj!B zO7eVRWctR8N$W;S#jev?z`Hl%|mxKLK zy3LmZ#{S(KIhgy#!A3zw76R(Qd!MT!E0$)O(Y$aiPXC(G^W{MNM_<{Z_oGN<4P*F> zVfYl6bTx}U@^4@L!Zr<2lv0;sC%%gU1dRWoWeeEBK4T78?*Kp!}!dzpIjn~qamAtM1(8wP- z>igM?R0HQ2Q8Lil^sirdIBeNz)8DD$HA=7H`XT#eO~0|OJ{C!-rX~_!n4`qAB6Cce z%_whe>sZJkGG5qhy?^PTJ)m+Y6o3_%3T{VT`J|3Y;jnqfg)h&#DAWX7inEZLwU*L; zH1TnjKsl$8QQrz8Mrf~vHxtvG{@fGOIf5UFdDr#EIYHf+^C^N4F;{oZ{cy2(=rr_u z-a1>TT?wItpG$BXLh_d(UUASGQLshdh?AogT0#t;?3Cn-vww?(MpI#sm>Y>n`gTZP3crRTnt_wK`cSc-~7<@Sag+|I^4p)C? zlq3}uRidkZ;{w{7$Q{P>)qB5s-b)v$0R51*Tm{!ea7c=M->jtd5Aq%;3BWHip_t7MqV zW*DXG=J%zP(35MOX$cDa?V5gCtuu>zoUi$&b+wm)UW1N^7=m=b680Ifrw!~onFhwV zA@|LtF4`4gPApSpnlvhvl7G(bN>2Ifu2as!U!2 z2dR|46$6}Hb4f-`8vM+k`Zgo^dl2bY-F$FrUeogKtl(qSaNj~}>fT_Eh7C-~%|-iU z>gt7dqIblRlpTIep3|i$yX{(RiLLA8A5xj(Yr;Q@$-cCBpzqR?HE~nwI|VWTGXD$2 C11jY14V zp*jlI=~BD1HfX1Hx6T@hBd$6M5dtC(LU-p_KO%Bmr>Az$aLQ_|uCN1pfA^i=z4!gz z`{SMSir22m(^nS&S|A7jAwUQSfFKA!a}5GP2!tRx1cQJQ0$>na6cwe81l4kBHVo=v zP@WjMC@Ef}fPRr24a3R|MdDIT>SA?{LLZ;G0a~7!zrtY1tcCU41!gX9P@9yXSqYky zkXc|lWKlwvbg1l=wBKYv)@;a@4Zfc(x9K7KidcspKAaP8(Px@Vmzna*E7z5p?20uF zYV+2D^5z_e32rgL_SaTy*WH|(rCj9Mx&rvpVQF~o)-f^gu7&4X-55GR5lr~^Tr z2qs7;ia0UMi4mv+$DBCs#1I5S5gb8q3?Wd25YD5h5TOW)3&cEqECMGzB+bAuql9T?x<6e>XQxvZn5tA#RwZp!`mIXRnoiry zw8KH72#KL2hLJc<;sk{e6pmAbK!V1IUcy6@7)cU-lAtJzrf@$+ury9HC`piWph%J? zNk4^?g1SO>Q4~oFyzq@*@DxK`81#43G{Z0y!B8YaQ;gvJB;%(TKRq@?`-Q#UA;!-N zBP>I+enI(f4~@|*#;`cUl5Bt)yWM~L_D~=|bF81`m;lQJ0!)BsIF{jg#?P>`2nfXn zI5xnuT!7^`mg8BTXM-F|GXekHCL5RqCy)zpe1Ks%hUHj+|Iav%=eS^yo8g6!7cLTp zW;33jTYQk`gF${qxHJ$H2IpLG7BfN#c7~trf|-R55HR}}jNmlTRV6F2dwShq%#yM} zdq)v6qcS60NrlIF@Wk4?gPkV_S{3TwU5owZq<(=Eme(jueSrK!&FPx9li>%#v~^lv zr=k#bs`ZC;AMqPkIiL8b=Z^h=NRqPc*0Z*btKo|v#p)jW)y62*d_~pZ#Fl%826gfA z((ZGace=NY^dF4qUV881uBnyE1!vFPzY-h1XZ0fa{c{R=SxXJn;hv{7{hNXS>p83JurfroFKChDqngN1wKjhECpW&H1A5PWIy)`jW49oj)dP zE|veUutW}?1Hi{&#Z98&c(e!6ntzX^YEi6ttv?q6L-}KMjDQBLIw%_+& zl3uqtFAsHp-N}Eqcw^U<dK6{|D*1@k?o}uFCNER;>s~{r;gTrfJ-3iqL2)05AfU9d@Z+{BtBDq09q> z7<7LWs|=rJiDH^hXYB{{TDMOczNI6kN+0}WU8pp&#}}$CGrA-Nr_Y*>r02RCB|5p+ zCCTb3+Ie-~&ZAB95^zYIaO@qIczUx$I}S+lYbpTA+ea1dH;!E*tMZLVUTMdM&v1LHPC*F&TDKWmx zx$FuwV`qxZxkn_C=Pt=&)L&tv#c_6T?YyL{s%2}`abDjlrZY54*CAcz^{I15B`^C` z3wBNxEincSZC{w;{CNY}7G=cS72>3OJw;3F3lF`w{v>?u)T=o)qSm@wzJ$L5O|M)U zjmk+YipMAWlRl6g%9>OaZT{DT)_rVavTC}xr9?LYwV&$KsIsApJ0{Me=QB0a%`I0x zm^fG8)UT4Bki1o~iE7Csms}V)@T9tRVesm!@Bd{$A{JTW2D|33l!ivwhkc1p;NtwT Z&elD{rlbe(fN^3}QPpQn2nhl5{|5pxmni@M literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_colorado.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_colorado.gif new file mode 100644 index 0000000000000000000000000000000000000000..006ca6cc7082a5b56b71f37d0bf380071c3205ec GIT binary patch literal 1452 zcmeIx?N3_;6bA5vyzCM{FAm|-U`7EMm$1MM8?20BEghB$NmpQV6*kyiaZ;T?MKMe* z(7`gwHcDX%McWOU4cD!ruor^1q}E|f6&Q${f&^G+oS-bD_(6_$e};)CzdT>gmy?q` zFXra#6qIE`0(gNN6@Z!mmH-tA3KCcfloGmv=JyH@cV$W0yPNK2#_N{xqx&7;pWoq znXc2#0^tGhaA`2E0IbLr++oNeI0TY_B#9ItpTkEQkfxCVWVmEd04N|(1Sk@r6i_Nf zIiP|=phAHxAj_gkg=zxTYODj)YS92_(4i5qk3(QzA6l(A2spwSL6-~NfYTfTr>Ajt z7CnF~oE7u}dcBB%NFeeNX+$Za5wQ=^gUGG^pa0kgk{(y!aTkQd2BZ^F5}V1fke{BVMZ%uog>x_p39u zpT|D;xD8oF@89rI2ZY2OId;dX&vv!Ol{QHKx#8%YYLAZ%uhj6JCqrX0@?^4s2Ssh0 z{mV;s>8;M8%DHd9=Iu9~8m@gfTjCQNo5K@mh~LT@7hI7U2k)1Bw=-Gx$t$Pa!u~I+ zdFchIR|{Lhw?U9TIeeQ`noNu9J$~y)x-BS=Q^4v{hPZER5{keTWHrhU$D_*@7Qz04X zT-3*mub(gSi?eBbgQDzg%jEpgskXExNkfkL-Cl=}z%{d2;ofbq2mVyDwJSJ6`xe_Z zXQuDMmZ@dOuQiz(uPnNrGXIgXhe}hLowX5Dc5z`+XvHP-hojdDB43ik zi>ch6{U^fMu!Igv(tC`8yyt(kiPvuVxc`uB_3ua8Pj{Hdb1r9@Z%)Wk#_Wk#Y^!(L zuO@cPi*2dLd8J{`7w>KQtWX)A{q_s8@&3qz+v|Pv(uI2y2a6R&^(UTO{%AS)xm%Zd z^%EUSKS1Pl&GOBtHoK;?yx$U|@RbQ0g7l8Fqnkpm*DVa!OaykfevtFv&99z*_`6N@ X*Ox;!*MaJ!A4Sp4Nvk3sAK3LT9I18J literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_connecticut.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_connecticut.gif new file mode 100644 index 0000000000000000000000000000000000000000..9004f4229064bced6b5280d530ee7fc57e6767b4 GIT binary patch literal 2264 zcmW-gdsI^C8pbgVDGe|!DN&@W+q|$Ni%n<-+V zvSxQR$~rJ(CEZR;CW>7VtuWKjE)!E`YU4S~Oml3u^R3_eywCfr^{sEce|#y6MI2}~ zj}Srd5C~KWjRsL^5-L-SLt~1WObHW^&`Bx+RY{^rsWd5_DW!!JPM9SN0hBaA073$g zDHv@4C;=cbC=kT((m*j2k^s^9Om+dllt3|JXr?F~5{Q|A6c|Mg07?Lq0-ziKl>j7# zKnVm&K~O%QhkH2$$w5#F;Xq0zQ^f>S01l`EK^24p;fWf+0o5Q5q=s+=Y9;^+mc>XU z(E?~iR(iT%kxZN-m8R!QCGsR?%wkRSO69_$Zx-ZBrOH)VGEL^jEfN8w6bMuz@y4_? z)v`=gc6M=o{#vPQvs}7ybH;k*TDe@VQmkLE+*qbk$~SG;pjOFYwP1&OMa6*}SS{ba zd3_Zu-?LAlE>l;j%67mi1XihG_3qu}2%e7XDl|P!E)4QLG4z|Y&TiVCX2;nu^DWZ3lD4;opytBG&I{x zW}C%w-(s`a%r=|ZK8nR=H`{UU-?7_mcBjQ@H#;2-F5KXg-R`oxoKBn5Wpg=gE|=~3 z^LD4(>B3VNuC7UtZrBueDGyDVQTObHew<>++$MBnITVb7PtM@yRP8Y zyqo2oKZd%l?a#Zhq5H|Z?^_<)L!#%g@{Q#sr)(PTj`7d;2$Oum3*Pn%OK0yhDje+! z@2tH6CQg~7KjeH;g%^drJEorWWVUec)S4V_R%L7Ow4`-!s)z0*YG;;L|D1bcnIR#& z`~Z)W0h5pj?ijC$u-k4-9hPz&Fo0M@@RY1yN-#B zq+7Fs)a?`ELbm$Gm%_2fkTYp>*Hm8;1uY^pS|{fYvrsaN)h3GkS|K3@9^6`z{~T1clcBK{B5a{UBzqRH{XS(7Y%ACMZ>3;MkjC-ZMwBz)rS=&e;l?>+D2b) zpK^8>6!Ch7ta}5E-FL*iLG*I7e_Z|G>qD2n%C6C;O6Q?IAyq>uyvMSyAJEce?DmBJ za1vWsBl;?VyOtL{e{b<2%$uBONSkvS3PPyJBMtsdY*Id_tS z6-5WqB9;DEs={X(35{d(8YZT(T{QN?D8{A?%~-~~HecXr8ha_HFH_#+PyP5_xv75K zCvCvehkB$`nNw0hTJR*iDqLc06VJK$Y;Ma`QBz&t-r4MWx0e0(`AZ7)i>xAO#h`u( z)HUPG>!0d|hEM1zvtD3wtn}VW-F!jH(euaVr%n;|BwP(3hZV~NT}3}0FMXl7c06w6 z{^$2+EBqE6%V;3_`V{lM{aFsdngXx(YgeDW>I4MZVb;B{RfBa_U*GTmVpsuhXeV)A z(6l{atA1+;Z!delu1mQ!q0~G0T=f-7!VALd6o#4}*qY!euecvtoYtPg_B2^Vlj1q9 z?#{g1qFfb3WhMo!L+-c6e}2Yp75C`Zw8ndknUCnJFs~NB{5~IbUrylvrw5(BKBkqm ztv-jManB3z1G;Nl*rF1W_RqWXZ+v>{><&CmH}-mGJB0HS^t%#jndIBK_aJ`a_$6yr zPi=i>om5v>k#-|ivwoqpkT`b?Nfz$k zXs9!6Mf&M?Et$2n#7(EXmhq3oUo5FCP*i9;_{|V{+HWN?o$)!NC2%fZLr;AxE_&>A z)R)#UQkmorvOVpmqRmsOb&VGUL(#xgif`cRgMn5^)Q%6v)umdq59f7f@t zx+V(zcs3=OG&WXz$2Zn^+F#k*G}G8i%p3Od7gcL18+0^xr%l(px)As2$tJzJer8+LfjP5RO_)d}5ElLgcy|@Y literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_delaware.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_delaware.gif new file mode 100644 index 0000000000000000000000000000000000000000..8b0635eb664bdc0a26f6bcb63472572e462824fd GIT binary patch literal 2174 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 literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_georgia.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_georgia.gif new file mode 100644 index 0000000000000000000000000000000000000000..88eae5eb486a5fdcacbde1255e8a60a2aeb59bd3 GIT binary patch literal 1577 zcmeH`{ZA8j9LK+kbX^0BKIM zg2z*Bv`7^-w<%=jbW0PQ>#`s0Rs<>=h)P`JHr9|$R~KOvpURSr?ff71<34%ilh^0{ z<0p9+ZZ6nBROEn65CZ@p6hIk(vH;}($^(o87!Pm`;5>wJ5XM6|2jM)7aWKZiI0q|E zC zc44wFDEmge2l90?<6 z7{$Vhgr~!i=?IENBGc2dJUtzY$#P8g{`3F*7azz{Dgd5$0YGy=r9sTS=lhOmEt8k} zd%OEv;iYft9OrumkG_;<9dC0KW|#~n=gXTv|JdwINi5AOo(VWsYRfX*m&SSuJ2&vh z@+`Lljd4ag*_s_p>gvX7hw>(_{95>7@wP|hXMVXQskF}O_QpW&E4c`>x=!z#96g$q zSev9)HMZ+l%y-*LmN#uzuRC{k?eJq&0yJ;3r)*JV;o?;*5Zg$!drGBVAA97z=os!^ zuGNWOtyw-0m%Mwt_O!j~R_E0dE0CyGp$(u1oKD=sVV#Ard<)56nJl z-j?zMcTq~%fs-fKCAbH}bt@rSJHw61yr~pq%e#wq z0uAnQTwAbSDptpD3KXlgMyS_wc_>Ipy4Km5zO5|&^sep*I1#a*tbaI_pI+10{LwPx zAW)~>apvmFZC{Li_Q%|%$zrI%U1&fMcT)y?=hHy_8hct){_gBBNa5X}G=0m(+OGWZ zqRB|9Eq@}wYOU7Pg3K*h2QH+Zx!y5y|CuH_%#Jxkcw=nj@y$)~e_w&$GwgkGyCBpt zG}e;se^OXvTJp4{xpd#t@5}ah*M{nJ59%ztK6q_iQN{6nUz)4V9j^cJ{o^<4f7<=c kf|%pL&3(ImuK%RvU{Y9^x^d7_WnMNrA*R0GU<6>}zg1LH4*&oF literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_hawaii.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_hawaii.gif new file mode 100644 index 0000000000000000000000000000000000000000..182e47bbab696f73ab4dc962a749b576175a4dbb GIT binary patch literal 1763 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 literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_illinois.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_illinois.gif new file mode 100644 index 0000000000000000000000000000000000000000..7989eacdd478277c66701a1eb3767d97642032a4 GIT binary patch literal 1770 zcmb`GiC5AI0)T%3BB&VT#d?flo1$Q;p`mG^DJpo8xAuCeq=?6OkVoURScvFgnj(>9 z>ye0xil*k#&gL1CI2w55zMdDB$JUDZwt4$}&9?u;et*LEzAqq%O!P?f0lFiZ4XcLBxPJxb2nwePv3Ke?R)E|e9wYMd^;jR-L0z3&3-h^~lC;c2f2Z{qO z-yw?Z6zc04PbQ{DpDnn0I+^N~8Rwc4<7VjFSj};W) zA4BmErBM?ifm_6$Vf}!lt@U|Vn`BTtJRt3pz8o1EP*zv%RrBY1s<(T7QAisX zyTwz3ofCf>+!>NSoUU!1dep9L8J4&AEOkGh?;M@(8(n#!85d0|x@M+FRI|UzRl}kgV{LtJ_oMdH-tOVf7wxByyNCZe`1kSg z@gM(J@W6Ne_W}v_4X}q>2Fe=8?!k;435@Qhi87?Jbm%~%e(~eHqOO*7q8x#|d>f0E z0VJ>?h-gqQKWus>bXF$*WQzgSMu(^ zx7v~#uNr5T`u|i{y3!euy)#4uXFVQdu87lArX4ZvjC(ohcj)*3(-I(`jdT5queq|f z;PEXzU%tmN(hsZWqkCeGZ&(D^BPB~VAPAsSe1!G&D+OC2)$22bZ^t+ayN*Z|+;ov1 z83Hprk^!e+HUI#-AzKbFaiWcJAZGZD5D%zy9*pvSGCu~^BW6>;)#ToBeG(~?8o|4gS%qq%BVD303b!msLQq1NrCUYZZ}pS3sj&$+_4bS-nFv;eDi z4v6oh;v5PI5L3m|TdUrznKQo?2egRIg{x275lx$Z5D9tGF8G^uB+3U8g6}OybdC5i zudlLbhNqCmvU-oU;)Qaw ze1QI97lgAp26F;*l6Y`M*UEr>MHj|8I00(lQFm^v@meU>)`HV>sA6N1&q?Ib0sEvC z3)H|>)Ss>>(@FO$0pX6megfISvhRXyVByRug!Tc+=oBgOiW|sg9vo%`tdn#f6F5ri z53_;PtABjh24dG3U?0dD0|Ee6d^~%wVP~wordiT%syIO>p-e6ba{1)TjPMdYNA(R1 zfr^DE)N05aJzNv4^ZT!Xet-8Q+tisUq8DL>^mp?3Td@+DnAS`p5q2^i0 z2rj0N4Vuu8Z3ZC-s>Z_^yD`AXGiD58)E_@50+*RH`+W`Y@k2>UoVc*L!jZ!1z?a(uafXeqUBnoJ!^)- zvw5|Z)*3a&;ChR&zLJo4TvM65sId(t4!(T!vv`;p=nh4b1OuFiDjDQLzl#5v=jhei aH+QRJ%OTv2es?2|2fZNw-r#o~7yk=Roi-N$ literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_indiana.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_indiana.gif new file mode 100644 index 0000000000000000000000000000000000000000..a8d0f761a7d4a0796b3fca802e44c58c26d6fb6f GIT binary patch literal 2033 zcmW-geN+=y8iywz!~haP5C|wW;X^ZsETa^dq7_CInN^JA7mSn!2NfMr*s;~^Sew8E zslC-$Mi+H#Qh?Qv|8vM3p?(dXP)!E@9*Ao z??1Psba_5ny$CWv;}8TH1qkLLSbz{7LIgF;s}Tu73kzBVXc1m3)hN)SycQMo2(L#3 zJqq+Fua{a3=rP`iaz+#wQQn9Fqts%85eG2J!YF_-4#p(&FwVi!5a$sLAUKQQ9D+*) zk76u}OK>O-P=Z4V$vjE|3}-N$#Rvu?By$)6Fp|Yc4wE91$0!D)Se#&Rf@NruVM&G~ z36i21il!+>f}seSCP|v4q?o2CS_=OE(=PWwaDO z|8SBeNa+*~Cjd@zI4N1cDGsLqL2?Ae5|m^>&@4f7B*l`HWI)m^DYZ19D3+o)ie@Q> zrC8~nEKPII50+|%WmxGR+-|0YWl5H$IFyV1V9Ts(GD;dk6#uDmkV>dFjqV7 zzEI|NV{SL$apAsp%;%E8eQs2AH_01gHuqro5=3K&BH zI21ra0W=gehJtV?h=inh$QTO2p%4-ZVdFt~JS2gPkHh2RlF_LkJQaec#*I_sl98z? zq0pGw&BOmzP9>Qw&^K~Es4{=Sz4Bq zrt1lJMb%f;Z7*uuuv+)04PVQ)JUM%7ny#;3Cfj^|VRVzNw07<4K-X*EExUT!Et_i? z=-o^k>Jq9g@ZUSvLh_amZ<=(bwC1==`^Wm`GDCX`6aJcA4HZXSX?w+zyM3EA_2-;l zy8j$o>QJsZ*3-07CBJpQu`;668oBsyi%K7q6x{PCns-;#D72?L8+y`zf22^S<>`x> zm}t-Tvv%vl{6ftSAoj-WRqGlW^$~if1IsMGekX?&Jj?>AvR2$Kid$k@pfM_H zKl5{wxx?vn9s2!9_!6-td+tg59Ri3EjuYa|;z1S*C*0hd5lPQLt z^o?CP1&i0HdL43K!u5L_ug@~>*WHL&3mTR#pH>5@lFf!#ZkhJfYn%ES70qT@RaU<} zDr$wfNBInHT#4`XOG?0Gj?NI%F45c@`qQfZIRD&8hwdnrkJqQeVvx2^B*p1Ozzec zMXw3_bk@(^MR^m;UMw!WcxZ)J_w@Y1f|Ffx(QZh%hjjcK}q-!UQBhZzJgV|(x{HghdtnXUhEAO7M zS+U!4HVTCgE1hZ3lG~{>!uwXq4xB$4apz3(k+v`UpG=Dh8>o)Rs(m-gTXf`C^GeMF zXZJr<4%v=J4GQMSLK#ofY&lkCpQ%Z4yFYHtmn+^%QYJsqq{wp5 zRa>@PP~>1S=Vtyi7GG6(()YM6zL>}?NGbHe+46K-ts!x3TN|{?d1z^ILu=rR=ogl3 zkDqsRXr|p^Rh_?lamKSV3DKj+t~LL5wL-_>>23BJ<#2*-5vCnqaO&;Gr`cqNu4(M# NoUWQHA6Ox%;D2}zXl?)i literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_iowa.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_iowa.gif new file mode 100644 index 0000000000000000000000000000000000000000..3a252fdef186c5e8c17dd7b0eeb5183b698972d7 GIT binary patch literal 1937 zcmXYw4^Y%r9>=o?Y=D(rT$Ba>ln7YX@svng33AG2DPj&4;Yqg7dx{4jc@z0ccvPI}^Y1MV1^p^8fpkrBw7JF|y_npu0m*4Nb z-^=^GH}h7l&dnf7vXE3HfItZd0#KAiQ2|AP$t0Lez+w?B7U)IHV!|vI3==R+v|<*k zRj^ut)hgnc1-D{2&f_@1afz^E1P-wh1Rw~JAS4pUNZd*iI7tX32>~Q2lB7hEGKE_y z0)kT{PEi6y0g4hSN}?#4CUBaB5HtlLX&TV9NYfHc%M6J#6v0p=LsJX`7)E3miD6`h zQCNy#X_BQWmZ4cjW?8_pBFn-+;Ru2wNscBthT<5SV;PPUIZoy{h2xw&L-7pFvk->o zSe}!4UgUX+=V74myp!i$0*(tbEwB();242p1)dWGNf2Z~Pz1p#2rfZTVWY4oz;S?Q z0S`S71c(3x1qdz>lmvhbfC7LMUJyJLJb)h(HnHxG0OFB8o6@iJ~fsnq)G; zog@GOk_eF`Ns%O%B&m|5$ruLzD2swDLNCfeIb~T>tX2iy3+zu46~(D2E=5rlMRTI4 z6UUtl<78PU>_e8E3ItZD&Y+;zoKCk3MO_#MJAm7`oSG{r)#ZYL+oifyi$%pCm8jfC{2Y0sz(DrgZsfXDn!*Zh+ESMQ#lON8N7C1I_LBdV(uq z63jhrkLOqOc)T8u--{sLUT&!MBi&K1D`*WAe%y+V`Qxh56m(jdp;9ttbLO%=Q^oiDm+knl=Yx#5wqCVg`1pE#VBpRB9DvS;e$9^|3z#ELthWN2+q{g3zBd@rBR7{2Mf zDfGCv5Y>z4L_GgfD|SYwtExhiwm-d=&^&o++*7x1!uIqwYeg2Jxy3VB!CEfee;@ZYO|Lx4h z-6!`OPwCAoUL8O{99>!c`|^pji;;^D4IW6SK5N@O=dI@2-VWn7rdSt&7*LdIAdc1nIIpgn%Y}AtNUHc-RtIUeoKmURJ+1cIdB)V;7$DxA*^;vx}%Io6~l8%G>^E{6} z+o#T6f8qOEC66wg`e-7WxD6^2vTmncoSyYF`iFmAe&HM8QBKuevmrh{!&jxByLl|c z92l9lZuwZ#yPaVRWaL}Dy=Z=Z1A6XcTI-#nM!O-|+}Np~cg;~1N=UJx2Ev!UDct-RO!a^6gC6ZCE%})QXo>>oWsgx>aeDbr(A$ zQcByp^Pi;b8SOjppXxQqGv}O-cv^Db!>?U_qms;-bL7rvZQ5VAUivX zPCgbsqcG9dhRp6g_`A?5t$%uQ*6?8D@wJ}ifv@p)dtO-G2w#@boTszt=;2OVsPD1) z%Xwj^3-U9^Tb3dr_a3CGLrBgG`DpB=y6m`fNmb#-+|%vGzFSAPpGP7J1{~=HI}>i- zTC>1cmow`%?5}^x=?Gs|9!8I~g-pNX2%WXXF`Y5#Lcj9Oi*E9^fc0uu+sV|a7JX)4 zOk{#=Gybst@V_t5i1%5x6;=2a8qU)#S9eU^udV;@w~r5Xclhc$r#mdGQbMr9c*|hS z-iGQqU_2`77`OMz?6~Li+CMEulM-4JYZhh19A0s)(fk;FFTb|C6U7Uj87az1YO(3F t%afM>@I_A2>6qH=hVRO6^$*%-eN&gav@elquqQujUA;OoIT1mY{|{)pkPiR= literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_kansas.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_kansas.gif new file mode 100644 index 0000000000000000000000000000000000000000..4242f1eebd6bf2a2869d88fd375bed4b27cdbb1f GIT binary patch literal 1846 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 literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_louisiana.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_louisiana.gif new file mode 100644 index 0000000000000000000000000000000000000000..8302323df6159c38098b5d1347cc4f5d6ec6c917 GIT binary patch literal 2106 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 literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_massachusetts.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_massachusetts.gif new file mode 100644 index 0000000000000000000000000000000000000000..dfdebf1036cbc928e9938692270ba0b9a0252b31 GIT binary patch literal 1741 zcmWlYe^k}x8OJX_1S+oF3k)LC%MG&0ZLx>o3PeODcM+Qdgo`~jX=WyWpQoH@IU z9+0TFk~*uY<=EJ=t*L0q=8wLudKS+`E}<1k6*0s0m@!=&e^8^I(_V2acj0rs=Y78K z_j#T_-ap>zmzR~J8y2|=T~U|I?WWys*6rpXh=3pxf+z@LAc%z^4u%mJ#$cF%VHSp+ zEARKyem{@+2?QY#ghdb@MQIe}P?Se862o8&qcDudFb>0bf*=WkB}j@S33B?RDT<(J zl3`GWp?S{FaR|?&q0lQVOLH8>akL<;;(3~;83&SJNs^@~mZn*TVI6p$B?yirIf~+F znqwG_WjTW2DazU59o%jKf&>^A{C)vJ1QZoWQlKb-rUix(SXOYmMFT4WfJScM?ERfTjV<0*(Vb?|7AARF+jaPUU&WXdI{Uydzx@oL5VNpbCN}2)f9V zqUeYbr;$Wa6-7-Hbx|}VkQk}ydkB#D$HT9Q~vQYFcdB~F%6StezfmSsVfMOl_) z*^p&ZktId(D+;10f}-e(Vkn9UWCqAQPz0ce0Kfns0AK)+08jwXU>Y3&0{|1KeicY6 zkX2x+Dx#{issdHjRMk*bC$ThD)>NQru%`JnjnFhw(-ciJHO!hSe9;CPRqfz ztf+0NPO)vown^KjZCkZ%!?vBoA!^&PsEtHz-ILzc_4jn{3-+mltSC@C4 z>DjX>bKR<(laG3st_e$L0Y=T`+X?w~O>_tOw?0S>mOl)ays+kW*sj0#mGR8_KfGfm+g$ZqN6IIjG_qf| zK2(p@<+VO(@AjsajwN@bjifidG5hYd-9e-h3FQe-9uXeA@IYV6az3fS(>ifzFty_H z!6VJgw;7=s-$XKYZ>xAovJ$BP=)x(18Jeqd+8*BUeH{Mcysz`OQ} zv986#zK)u;Q;F+8+|v8WN8fGk{c7#4<;5Tix?l0Hoq_#pqumQ$`P-R=-#uIUUgq|h z&yS3q9x6GS-qlYr}B9Y}ld+@WIkvgU)~;<7|M zlGX3OxXXJz=ja3S!dP$sztI~vBXLekaa*F-y&{s;_y_9>>Rzm_joV&RQEs$Z7rPkn;F(acGQ_oj7Z0Co#-wbce+qLPz;^NEsUL zkZP(yMB7x9n__nT7?XrhtFG-9vQq6{;1gH-{<*${&@a*LP9xSAl{eZ z#CXSGKoA7e8-igP7)EFi7^Mr0KoAPU=%&rS2!fyp0_cgOFXV!wE&!kiiUJHp0E%KL z>WBJaz{L;HrcXFT0Kl^cejG%Au@M4-35YgIun|5R<(s<-OkGm|z!8K%0Uae^z()Yz z8WnAFO<@BG1caXhF@#AFjPC$MFpxO-i7^aE0UrRqClDc+7{$Z@6Z?fHz;q1INeO~W zP*j2f2}(D73BV)(mjFV70SQK%FJU7j8;}qUM#6xEY2zdUNCYDhoJ27a#YupY7*5A1 zHby~!f-nlE!6^ixP#T;<2?`ZbfS@pX%9cWq6vCtsE`>2Ej7w3JzLC4&a@Rd_KuA%7 zHjM)CDt)Z&*~@xq80=j7p0 zS-dDxAj}Crn3tH6DG`#XDLK5@QURaZlU6CpIEjlCcw!ror4*#L5K@v)$%SNNOsNth zRaj{&CROvxS~+qpUOR#}PT-Bt2)UL}4DP>lKdNPt6ibeZ$t+3Mk)uTwRA$AAB89BD z^&FX%DlaLkQOadMD5^;Ea$ZI2`5I+)b*G{|uU)0=QDv!HtDp9f3nP++3Gu=>m8ZJh z+S=N4TcvK--dDE`_S}B-;;tg| zVbkzuZ6Vdcp8_;*qSd%bDkcrhy!@!-u!(yYlPN=QEIx;590+&Ws>mhmf9W`%|c*cX|Vr6tas`EK~t zW0hgd+Yya;-+wIOuGgOm6T8Rj502HZh8o$VOu8pfrt=y2o6vv1Iw$&NQ>6XeI_tpm zvraz`gnOk==Pz^Z>t&0(jIF}pQI>J-)VG=61TyOa;sohZpAWTtdwf4EK8*KWs%>C_ zrRE}IsBKqcbjq4xd30FRO<6F@@A_zAxy$Tm5qqcpQhixKlhgCv$r(%irh+R={g!2s zg&L1PG?mh=QP03qL$DuF8H`V_xgL>Lj!6{Ajw{NdNclAY-iKdcpd*?e;+k|6ILo?uNfP%{8&?iIZ-Z zlcw}`9Qduk&@*Jdz;M$@QbL*A>QBuxCv1ZZ&Kzv&|5*RVt%|GcGddX)^vLsR#*5({ zPrYWimfMnT*E(PLb3&iWjQAnitj@kPY)$lbdtKCqx?iw4ccmu;wd?qqsS_6rhi*PQ zXfgj4rhtb!-!9g39U7X)air-wR)L)97+;6{_s-^Zu$NNVZG3CwfJ<=fp$MM;>imr% zD6M(P!0H}lEVa0&)H!DHYH@jwzc#;RX8)N%Bb%@|3cZWgSU248N~9u|G~leI_Xb9(m&3qIlQ6j4|GlPiJ?DGq+c)HrR<3dWadEa!SGQ}*fn_SlFIXE8 zz+mY5Y#&c`u2wP+{iDik7{5{)0Lx5ZU)w;vqDYzUhNDMYG32MADy-j4Y;p7b_8i9V zZjFoG15V}n=_T$1vax=PQ~JxrtgG{Pj*rHlecbfpR6+R1UW+Q*eD}6^lay_vR)6m{ z*l}~38JNGvr<#4XEB4l@h$l0aS7rJR7Ih|KL4(y3Wr^pNi1MUl%&cy4mmAT_gwyA8 zSvr_Q%yik|AHKAsdviHIuPXo~Cgh zEvPuKQBOZEO&4}%6x%$R*|4FZ!u+wa&|vShk!Lf*JQgcFu+qcITbbSR{<<^+=op&J z>q5*r9VoK0VyNtSz}#XfXIt;ai`?L?)(=nQ$O^se@_Y45*k+EAwg%Up+Aa%vi$anF zrvAz`Ut)o*!}Gcp9RdAY!(pTS1BHiF+xoqC#IN;knX3NvhRJ%vw`&|$Uf6tu485fh zYolt5%x~_^F5bF+d0kXYFVvlO%>UyUtF!z2swJz*jYH_k%=sXj*GxkzM|>=;S@^~B y)Ln0F<Iz!#t$AG7FOE#%v~DMcd=zKeEtVXJB_RW literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_minnesota.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_minnesota.gif new file mode 100644 index 0000000000000000000000000000000000000000..46b3567b3e50a5de300339e6496cce6abb22b87b GIT binary patch literal 1689 zcmWlYe^3*58pgL(m<3T*2)GKT*@(abDQpl*5DBdOh!GIC9@lPZ4OysH;(O`$ff%<@ zh(uuugBb*7a9EAPB#KfnN@1vKt)Bvwl4u5n5UPMkguqY&#-y+~&IcuMlps(-8X6x- z5DKXjBc-T-5 zF*r$)B&EP93g1a8+_Rb_weeYHB&DWEiXs^`?Jnosi8Cz0uo$C983W815yq%+-_$g% zW=OS~P_vj?i>eKn+CZ^1{n`x4s%cg&Wm%GCDVCM8T8!1>te)1>w1HuaG;L&PqnbtG za$(@1AdluhE!!I>)NMk~#jY~Fi|95I=QfJVWqF(=ku6oQ+K(Id%Im9CV*%bjg&}=u zs~;r?Onne^t2~4+44&DyW;`vPFOGe#N^_`6M)Yyd_Dk(ms+roqw6w={pNTME%(V8V zj#?ue7jk|a3mqES#Gea#+86%JB%ApzO5<6qx?_E-k~o6>esH9YXy3+``^zyFkP zD|*$Y<1PF6pDMwHJTR~uSae{x2Dm-~U?-R<2d)OK-eTZ7EQXE~Uz=@~4%gXJ_M4W6 zcgJ`=$G5lh7Vdd}J8!eRm@xDGwijb|VBvt312zuybpSgD9H)3E2b>+iY6W)doWsq2 zV08e8ZSKK6@Nf#ajKIYKo&(@00H*=p0eA}l7QkBpumV><;QIk^(*}SIxa@$p17HU( z2jCq5IDpFucqaf(;Bo=p1%R780K7Zha4QOO>-8_Bzza|>94zl_>D9sh5&46Np*io$ z^s5Qyr@zQ{-TPwOH-phTF1@pRRc+eK+GCRU?<7nO7gT?7ChKTScGqb8kEe4QD@xwG zV>tF*xw+pEJayoHa_vmw=P#8fmoNA97Y1uas}zRRn!KNzCbtG3KdJQczPt8!yR^oi z&yI3#5pbQFiJ>E72UgJk_#+|UcT>^zH$y}@N$*XQN8YaU-%A{8Lb9Xxg4xYF!Dgx@ zH2_8+NIq~-w528Lm|&_=S~oZRtbl7+8u|CRD|pkLtg#O2`1a4}ne$EGe$aJgzPog2 z+2e`9!;w4QDzu%=vkuMQ_wZevxWk-sXL(ot_@)vNu|SWWF>gPedqnY+a(?}JVOjgt zk~J@#M4`4h$!8ne<{4G7Fd3V*wD>Z#SafM}(O0r7Q9b#qW*@OjL%S0Es>5~!YpU_q z?HBss{YAgl#2jzwu228X+;cxN=;=Gx1Yw=SKL`VTB-M*o_@wm0OUx-(1I~Ywc^fah z;T%jTp4ZijIpK6>O#NRgmxR`8dObv6=K43MKZ^PH&lQWR3cRD|%AVJ(JCy6UIm|No z(ZMkLlWrScwohtYxl8b|v$S#%5c#@W?pj$SNEUl?u77Kdfb`pWk7_+=mq+Gb)X!JHBAE3WBOdU%Elx^zpp z8R=!#?8HlD4$yz;fLd(Vrnxjcg#L+!p&w6g#+f zAZ=Q=;;V-e-$MJ~h2XW{bCdP!55bEJUU5h+^oCSETTReGoPx}5hzeRL5QJs9;hd8K7xfbyvrKdjmv|+;u^OG$7 z*0)B?s%zNl5YshLl%Uc(;(B=ZwhgRnWo9H0uywIb!w+tzmGXxTlBWESB}wMdS384D z{}a_G-5r$Fh4v&c*Cn%0*jv$^A>-kxsh7tG!&|Sa=5bTZbpMyPN?r53(sMDi;r~nc B1=0Wj literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_mississippi.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_mississippi.gif new file mode 100644 index 0000000000000000000000000000000000000000..6984e5d7e7db39490a0ba312af24224a35b55ccc GIT binary patch literal 2004 zcmW-ge^AtB8ppHCt_H+o%g=>daTi1hA{qrG;^`7mB;yar2}0^rA!yauy0F^ft#>Yx zR*C^u8x(D-)HAJ$v8eYdo%-6vYP6Kg`E!fy$gyn^&pNHPV`)1rT=bpK`^hukKi)jg zJM$J4F3KS)<|3)cFoGZ$k6;3Vi3lzrxQJpriU}yrqquGnB}5CxTX2sB*DY9Z(Lx9o zLbT$%6&I`oZzXh#R#J2jyn_%Ngyi0e5c6O=$uB0=j&B+ihuK++;f%OoR^j7TyP$;c$DP#8^N42KbJ{Rb4y zQ!GPp0?Y9{PctIJiYzNqj6|^#%}NX>F>Zmf?i0fC@P`^M7@wTQ4WYoK$3tYK}k|28A`G$i;64(S%R_*6~dtqm_pzR!zwJT zaBf8gik{1=qCiE_ttmhQ4lBSAfS~}h0L%(-3&0%!#{h`~k^nRgXx$`WXuz<5=YZe_ zg5HD&i289V06H1~0f-?GLm`epT($L4uCS$TZD>k6#@-Hoq&oVDvqc$rP8#@P%2BR9Hnx!$}uX(s%}Q* z1yvAL(WBp#s$Y|&s4`HW53DMB0iU<4s!&r^Rr9c#htqgY6C_QNHCfPPMFXk^1DY1l z0{vQGD8RD;o(n(_2=oU6L;XD4|7;BnDdNzx&kv)+qodDvy8Z-^XK%rYjv!5_ZEUog9ht9WbKv~l6BiZZtZ}y5>E-@izn)77@0&hw zux0dIMzn$7v_>~lfQnRZa z?O(@NN~z{^8_o=R_hVzbRvh2Ht@oQL=2w6G*_>BD@A0dqvYNDFx%}R-5qqllYGRXN z%CaE2vi0G;6I+K!xv=(USNHHwEiubB#OxRy0XP4<*Y;ZYj-Z45NCH@$z7fk??sOvt;sX3 zMe7@0z5?&B6E5XX}xxaIoXpvY6b5E5b7R_E$B=PY$}8 zf?u?~5qubvQ8l5a_PxqqiXX&Xc+$K(c)n%n`ps+ZC7t`e{z)nNVMYJL?*`tqy=Fy< z(6VAG{g2SHC~tO&F)T4W{n5?p>jrZ)uqRKQd2K?=cF7r%xu?bUr@8HF>S+N)um6W+ z@kc$)sY7Z?OaFIPFa~cJjMpli-RMR!=WJGeTW9z6#1f<+{`wzF)^hX4Wqy|BEgSGA z_>NipA*EHxyECUoI_na=K6_s5QLE7;tX#ffn46tYacd;ys|V=q@mntY^5WAMD+^7_ zPE~{@T{2WWz4w<7`N6b~^=FzU*p^(+ACsT#^^VWBKYr2mDbY;dNy;sFy(a5o=C79z zZlARX2~96HMW+ex$4d8E-C+KIfC(b|_8G3?*h_{#iip0AtYqP#m} z(`Izc7_@Raz^Z z-f*AO5MmiH3+-c1uR~iaH*{o_f0Rd@bY{j!CzZl~|CXQIX-puGbw_M0 zGX1^pNpo%QKNG*GE|~Y_jh3>#zO$+M`}m5~iiX?E9dYG{gC=_Z)A+d6w^J7LF=zI) zoty*{4=mn_U)viQd2~|LM`HE1GYbw~_?Dk(Iu%w}^U~fGDIcdsJ62rk@R``buKQUt YR*^H;yiwTuQY_h9nc#L93`p+(0kHpoQ2+n{ literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_missouri.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_missouri.gif new file mode 100644 index 0000000000000000000000000000000000000000..fe59361f04a78d2155bae6ba620c2880ef31f3b3 GIT binary patch literal 1811 zcmW+#Yf#jN7LI_r;8=E1>Q?a)(7NHF1S$~3BB?95auHUB;ua~mYI_^0>qHTadZ9!? znu3;~=#4F)@c|7Y8ehF>c?O{xadjeCCQ#dJ)X@RuUKcBc8}B#Y`OY`r`E%yXocL8M zqmb+vzy!De0DuS`MCd^Rgm8-yv498)T9+)qVGOn)2yC~2C9?*@y8$w16o)(iGi#voK}UP zbW9?Hq*X@R&aO;5wIZX=Vy{ZgWKfK=e0DBrD`UlKlkEH&N24w0eD==E7*1mZi%~R2 zu{gotBufx<;ej(4&SM0RkvvZDc2dAd0VhR*5KF&3M^#m7`_WY#P6@=f!Xf6`;o9p2 zB@(pwk3(Gt>0ju|u0w1W&51N8b4H^80s;g`5FkSU2kAM;C_+XV1_W5g!g}s4jXZ2* zU{HWT1_5~l6g5Rb-ioqTi(s{IHk7epjNQiKHW9b8IL4Ehb}gQy1lr1THbu5E6vomR zM`H|4iWDg_Buh~OOGz}vF*MK7DoZmA%P<_v@+>E4jpH<@sc?b6CUAntu#&_}k|4{R zA~TA@4|24YF`UFQ(wQ?iSWY^}IayBOxCbmRvAn|ZGAAfJFAIXi3o_rV2%;#6k|4^> zU9u#KlCxQoMW^Hx1VxY(Nu#XD&IhurdDZD0R763M6j@dkS(W8MMYCEd>iD>zs^Xv) zD5|VzZBSKJ*RZOnni*6F-@>KQHK@ogMR93ERSVSrXD$unuJN}B)?NU3`wPo;W5ABb z4WJ_{?khLL%*4C~u(fDPKpIe`|kpUeM)d zSEDwG?bIjHxzOvHhh0H)7Y1gjlp*|1+pZu{?YZ*h-r9t1VnNCyk*?by?Dmx!K3tEO zOEz|i1?~~KFLs-sB%j_l-WcBQb|1ebG zYda5|%m|xMxWae)4RRH@sLDxsUs*m}GUffKhf?gzV0gcNml~5ETqoXX6={!c4v7Ct?9_W1F@?Ajxip1QH> z#=yGl#!RuF8+m>-sQ$GlIZ)s9w4<)x^}6=3z2m1N*2a;L)xGEEzV~KJ{Wyf>T)c0a z&*i%>3QEwqr%&*hk(=J#Hfa(yFQK4q^QGqpNFvE`VlCY^>-SSW~M|9`c)^{TN8iJx9 zM)}T8HC;5HKunGzqvKw(IQ!8Lb}9CD_ni*Ii+MX2=7ikNwTEZ@fVY?5k8)cT^PoGl zbvt!5O#v&s9w~4dicWZPyJmXGt=*x_9V1B@M|GRIdfAPV* zvQs-ZRD94I_TM-UL)@4Cou1ng8%y4=KHI%IVzCMBj2WGt(l+@P^!&HjLJabaOdEnd zkYT3DE$BNS%q{B4=i!s5fFmv5v#|Sy@;l|u>3{a#%`=ou>lqEOKq1{erIGh2A9vH^ z8*9yTIuokZ-U!co;;UaTHvi=sxYF$5{-6hL4jsQ~pSt9FWq4Wai#>PRqy6@Dn@2`= z{wyp%?G=G#emc@RdBcT*sSeOR`*XKx|C-=oTW1L!ee*rr9YA{Psy*lEQTLD7z_sS? wf@$=?*|dK*d5a~5{`0em#F3_HHF|OgDqgYCXejP+9EdzsJk`@j4**O52l|$NTmS$7 literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_montana.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_montana.gif new file mode 100644 index 0000000000000000000000000000000000000000..d3b969e0210a8395111c5bf980d4404c9b1e4165 GIT binary patch literal 1745 zcmW-gYg7|=8i!+0iGq?K>VyT#5JdhU;&2}X#o;216mUSQQ}770%4J{?1{62DRY+Dq zu1Z$H#?x?#Rl+k1qNnmj#jxjLG0E`A0gWwDtb$S~?1A;;EGC)WHE=6$3K3s+na)eNL6H1f= z(|kbk0L2Fs56}=o@(~I`C_X|%C<#!Kk5bU@w+W0ua0(DKLeMBqqXdZ(6oyk6Nyf($ zfTS^+!buV*DS{+PiXv$8v-~)eq*00{X_^Bw9Ki65APgU6AoRCKaVbMk#$3!n#5^OY zn2(Af)VNA+^y(@=TWJ5Vy!2sL@5O(K8qDgy_pIh$(6lIh*yu;H+wtw2iV>Vv+qiD(noLB zXIaaOp<1!0T;^6Q$CL_tWn(}`z0;r^knLDr2iAVity_gYRBgMX_EbLs>H#0E7S?G+ z(@)^n<90eVc+&5ye**M+w`n~zt%s+l;f2?B(>n0$TX_1p+oECT;-U?^2(zpau=o~b z=Mk1g*p&b=ict)%@rz%jsw&A&6`94H zF3ZmsSDn4wCQdo4D3M)Bm#GVC?kMEN%C3v;jq?6GMM}A{qq|kr(sASdQ>_+%uBE5- z#Qa;FWsMN*BFU~C(`t%lUP;(RnqB@Y%Q7r0W?3oAmZ>!II|FK+u2DCtVp$o>DyH=s zmQ|^>I_==7ZhUy`<ecuJs(*B&#*2^|tH;xVn{~aC$9lD+lZwg;?$g=QDzxH(aq-^^UyP;f% zzh8iYFYJ{>Wi)+%=tiPJHxlbxG3lT8M*E>fHB&y^y0tqjqei4D;F>zx)C46T^hnqJ zGwtc=A#3l{U;JZi(nsud?aVqSw4iCiE92eE<-}7GuHc)`W|HIDR5uLwD}|!?wk7jT zzWdzqFD4JCUipIkd3pAB<_ov%7kH-S>Wsr)5tnwX!MOK+K2eZqp7@WrnV7neQaoYq zde+tYQ0KXoi3ac&p%9vz15d!ASMQg7VV~ z#MfbgNxhA+h_A_n1bBBoZo(|mOxLbI)QFVrdz9N%D9rH^m# zL1x0u)th<-vNdKk>SO1VhrLf}Ja2_4wf?(W<`01Qn4VtfNSUXN_zQB+WC=cZZm)Vx?RPb z9*YMPCs#QX)^tj2-vu=keUfV>cv*ftYKyJVCXQI=UmI>Yisz55U7K?^$C`;c7Px)F zhFph17x;YL0nwYs1tCrycZbi}938{Vthv`5%tR{lu~4_>VV5}M>NkZYE;)B^Mz~%Z z?^^SRq&CYzw*m99(E~XPJ-AE#0795Hj`f7u+|GX=0md$+pGaKQa&>Er8JgCq_)~bn z;P#HT_v>B1%+Fq{_%`X6l$3<=(WmaSW3d*2yRP;g*m>8ha3U}GOzURrwwi{Gs9~6? zMBmQU=eW=E(T$?cJ&sIB=s<&o&(blj*3&RKA07CwvR*U4N*l`(M_a26o_QlnhRQw5 zOT9w@Qgf3CM+uZ1o>3i{T;jNY{KxcaLDI9Kdt3D3)#cFev1jIcmj6=y?VfjW-O-m|Q5(@!je{PjWvBJcnWMQtK!yUY-vCW@5Sj4@4)Oy6E=8xPN2dl$DJo|Hg zhBA*`A=yK|;)QqIA~Z}}WqJPy_IR6gNA;&0KXLBnIV)aP{mt6F>fmfo{_YcNR~N2` zqW#|IOSC>e3{+PHPRJhgeHhISs1ge0Rlyre9qT3LE`C9pM=PS0Im7za^6!X8H-Bo{ Qd2Vg)S6qQ5pTpVxe?oovwg3PC literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_nebraska.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_nebraska.gif new file mode 100644 index 0000000000000000000000000000000000000000..53e6220511be8653429f5706d7ceddc9c0c3777b GIT binary patch literal 1734 zcmW-geNYtl8OImYupHOAz(o!?jmO($c`FAPSa}ha<848}ALPJoG{{PhvI5F#AU*2k zV8KI{m*7gycn&8VZ(1TRArez8pu867324XKAtDsTOhZ~|&o~|FrQi9?^L*z!&olG< z^Ta2{g<>bdp?4uO1i=;|QZbC~+m8|$1hAc$pU4OGhol6AlCYFOU?3I~B9xGzabE86 z1SZBXDZmjz;elc}ies_}0ubQ{L5eXT#Q+uoaGaDUr{X}7OlCqbBb71`O4<3GhGYza z(VlTiPofAV7#Ts!EEP~#iW0|^1fT$*P(Y)=64EkDC21MSV1UK|gON0@P~s#_SPV@Q z6h%-pASnn@K{5+0gjwLkxC+Ku1ZN?fgK-YQISA)roR<i;1okp3`VJNN=492JaZ1CEIAjU)Z&&EnkNY)C&P=TVJ2^X zj^aQzh$eGVi}LW}*(60#xp^5htpE%~T2NC3>I`)eTwQ@wF>h-=@za$cUsNLcI@ep( zh+2th&ZVl<3RN}GR>ZNIEbe@2^M%8DUZU@CtAcWB=)H=ZN zDV!mL=K*g_(;G9o+S5k5gaZT8@osqOkH}EBbn+YNoj#vCy-APeBx{Q<|1=@yRpimM z=bz`Je_D~f{nrswlI7rf7;PqUj>#Crs|K^EA!Uj9OWurL`($9hm3b)_X-!-b|Ay^hv(&}~QO)r|b^`(Lr%aubzT|+}df12$6+sw`Jq47s^b4!oL7oIF^ zu8pm)K3RIc@%{7X=FO#zjSaKeyuEFHzOnuPzHN~&WYN#R5Cy-1K8GaX zo$KBlNIHCT-_1C|v0`D8Q~27m>n);A)6nnMydSuUQojq!G8X@o-#&X(poqEm%lj?) zB2mbL7W*Lg-0H^s<%`wVl5YQC@+dC!)ws9)RUl!7M~go_Y1@9d`e1IaRs60&>gr3R zwSI%DQgceC?Iq>S^AbF|v!PQ_X7?sNv(tFBCU>-HYpS*D z$hF}@kzaZLJslr0TIlS2D8MCHc_m9W;oz7SP#z`Nio%g3p*>_J_LU{?d3dr>;Jotp zWt;c*hA$-fcHDQ%*_9G7I`FUh5tBgB^>OV_TfVDYt9$8tZGA6w41fqx-q>z za%<*aHQ4uy6ybN5w-y`}o$eb6^o6%1XNl6{2_IB^sqWwl?%7;q4c}&Uqra0=G^pOHaX`=&tYF_xM#n+yT7_n-_#lW{)DzQ15jkugFJZ zKFUh3I#Bw-4bwZfObzA1rtseTp}+QRj18<0?W^i|lXTX7#wFjFvtv(Q84w0tEd5OG zmeV=E)B8ro%Vgo0M|o`EV(>`pyM<@%V|KSm9*nsjOHLQsT>a6|=`bsKe=HEy2WE+Y zP-?PIl%JXOb^6M%V^8YhXGFq^ZF;#^Kxa^*z&u$2zcswtS|7PKc)B*i%&*kGSD)3& ziCegk*xmPf`eytGhKs8`{-AZM+3%2$R_$qcVO`_@?Qo!-EVay3>5_>%&AQB=jTSm2 zG(_D;Jm8bl)iy9<1tG}})=1P~`IK8`_Mm+B?lUSsGj8Kl8nlXS$W!P1CPI6(Q4e1&%iD-k&nEYr3Rp-K x`RheO$+2L@=A9Rvnp>AIdyVYc-4WoB67Z07obx_#${zhaBs4(R9T5l$`yVbW)jR+I literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_nevada.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_nevada.gif new file mode 100644 index 0000000000000000000000000000000000000000..5e9099673fb0106a7d7976a3c7b447c51467a24f GIT binary patch literal 1452 zcmb_b|4)@w96lFAj)HW6)Ps`UQ&-|3B(K8cRWm%7FV|OQc&5(I)CtF>?pT6H&GouM zd=(Fpi*s98 zhOoHcmf%8g9Ts*(ILN}`Xf(*8K`RF*OO!KiYetvvC zySc1%U(V~fr6Z9gFO)W|=*$UiT$;V?aPA(`9cw*WvNh{i*75Y4i;~iEidTAM<&@l+ z`>g!yt-oD9v0`~TDI6$m3!K}U_+Z`1%-;2%t+;aiP*Yi(Uv~~IFFsIqd~VHx{8@vg zKlG^Y&*3LEfs_oN&RD$j*MtwI65q8=k$T{tHpg~0q$T(oYWm-Jt#MlZ>B2jwb%F8V zuL(b%TJ!NpUg4`fYtygZigY#m{}_oC44iHnGv|WutrHu*jd*6)?U}ym_E6pLpZATV zy)EHl=yKVdp)F6dp=-E7=E^XK5KOL=`az?znQZD7^PjQvH&LR%_*0msuAsz!Z_ zi+Z#Cl{3mG#ZdC8O8=5q{L{9^c4SOs!Qxx7wrN4Xv3BpwmO|rNet+%3O5+Qd4aQV? zWlKu(`8yXqveX+O@o}vUGkyupP7Wk>fpIUT;z<4Wy-zCw8O@QKv0b?+VJvpC79Pmz z9Nbm@?!nbB`sydQ9~&tn*~`*fioQ&_G``@wCmd!TJlW~^miEs*05ZdMLpkex-q7ak zDyJl+IM_WjnQgOLKT52v@=q*DX#=0Y^T;z{<%ahDXD8Mkzw1v~2NKYxhu&CH^3KS> zo8oR=|Jalr_LYUn>rh|n_FG+h$4;qQTd=XByWpoY8S-RZJZtmax&iO|d9yZpJYe2G DRb?5X literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_newhampshire.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_newhampshire.gif new file mode 100644 index 0000000000000000000000000000000000000000..981c59bec9694858f82ae6e4e8800e4441a08017 GIT binary patch literal 1704 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 NV0p@FkH_P-{SD>HbFu&c literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_newmexico.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_newmexico.gif new file mode 100644 index 0000000000000000000000000000000000000000..76182a7a90f1f3fc24f1ceb858a7e476a4d6e709 GIT binary patch literal 1641 zcmeIxeNU5T7zOaVPmA7t6BS1V#)-5-JhYAgBucFWnFNYh(!@jz&4Ps#<>ZK>vL=g9u);Vjweo zh)yGuN~h1_6Zt>d)}+rq+B>AAu~u2rI_=);hbUDPuj-ZGx4uQ4J=hc;5_Fg+datHX zGF+H?bV2Xctvw-*AL^ouG}q&G%B|m&Le6e+sr1gbhF$#z5u#PG`C$T$sn40)pShQu zhit!ZA*r?IcsJGIHnbYsuJc>LaQ{ zdAT7UHRnyGJ-l?jp^n26yZa6#`zSMu6K^HTanDj=*0zu*gcgzf33Enn}y(PGkh5kV{{rVerw z-A)=IoIu+0+d-}Q#~Z@C>&j%EA{TQR~X^h&1ZGP6K^|C6!k1Uwv$;un!3Pg{cN6( zyJLD&l5$O~QGc9~!k!a+>?RoNSZaNJJI^DeoW1)Z8Dj3pWLdj<&$bGw(D@Jr36O%T zcQ7N?H@!Ms^rcMtT+UqXe|ivO=>(CH{`upai+^kL?A#EkK~aDByh%E4`2}90oVk=2CpM&T@BV6~5z&mJ=AUKb z`i85;CmZkAMvPL6xeNJ*lO5kJ%bo35I8aGvF&P>;!4%1_&(ChNt>{*#UYN1uS_=BI znZj~I>n|m;wlhD`rU!DB`7?J?PEXI#gk=8$04x|F literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_newyork.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_newyork.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b1b0e80531a1e537b0bd5261fd9071ec2952a7b GIT binary patch literal 2300 zcmW-gc~nz(7RQ4uCO{x;8e}m)Vvt7wc?FRN3Rze~!18cOpGX5?8v_j(7g}5h2#Js& zP*gxvWRZYXiDi*0l_Y?GY@&lp83z=VDjiU&(QzA`dp_rT?m6G{z32PS4GjkP-gakMMtfy0bNDzkvp=7`zLrb6l;s6Mxuj7({fCOPANI-%y z5-cDCj0|C97y}RnU<{^hgJ2Z?3Wfj_SqgFhg1~^q@n8m#SSW;`5DP_^91?<&m*8Lk z!5{>4-?R-uP@kafOaA{aLG&bNfWk`-9o>SUC?p0@Hh{Asx||AS!?2hM%OUs#0)UVV z3m|x@&(e}jMg#y6kP#t3gz#4tLx>n4*<_XgVhP}{Dug*gge3$lF<{9dmKfrQy+Zdw zr~sfMGDqgc%>kIeJy{5_BOVEP04s;kB`%WDHn4=Cjh50032s5+a(9u+S=bE;N66wn z`rd9>s)lMu05$=HOFW|Oe@Mo3Amt?x&4Vl*bYuc9nSk=AH`Be7-MvG@y_2@O1%+UL}UAp9?ytuyk7qsgH)YX8DRXM$oIo@n{7*T_v zcG_4cW1w%{gWIk%W3=giyX&T@Z*)$JFTeTn(If2JWcE&R2zEGxU%Z7c+>0flg6xFY zgTbQg_&vhS8S?K%ip;%2kvKQ4PdyTihi&?E@mpw$P|Ke2sS-?Md_()!PaavJfWkGp*bw#GETz;%vSyCsfZjfG7 zrZhK8O3u_&*8i$JuWVPHz1&fJZ!llg(K$HSa_hZm-@lo-j3h?&<>7IOibLr z|9F0WWN~p;r~B~b%Lg~y(tP~|2L3Y+!rOhcf&gsaT7polq@nSGPd*5)SJZowx$-~e`oD?`7WQF8ZMk{ zG`I56B!(~0!i~4TegAU9yR-3!RK`tpx_(PH6b@?J736mI#^Lu1?-x&AKC|hk|9-Ua zpWV*yxpQ8yE&bg>Hx8GxV$GfBkJS==0{=?X#WLLw3Z4qPmOK-E{m?O=o-}2!#fjAM z5`|Nr*?`vW#Jk(q?rL^gKWf%~UOaRaeoToHT~Eq0gvOw~50ymy_U4rr>;}rB=^c1{ zZ)d2-Hhq{840~(wzgBU7BR*J}F?C#;xRvW#Ia3y8 z*2&L;qrBBd`sA7%J)B!cj?E4?-z3o!+apzF!CP{1h8rfuqlA?U=QZZBJ@GfKolM11 zY@);NWBx?9d$n1=6Lw*~L*=Cfwh8qXM9)5+R_=OjGQq^7b<#4zt+7>GOl|2-FmY|- zp~p&^qxbT6DTzJmHJ|^vpt|XP%CvTH{eucYv2W2NWytA{Qaik%8DBf#q3T&QURz1Z z8%07X_?UAs$!!B`4t`XHIu6G!Gx5D|-8SU8Q?4=dyG*i*^pkISUF6=0TNdVQ8{2!Y z*)lR%Z+R7?R&Fak;57i%=P*V#KD!#DH9a~c9wqt?F^s7v7tjcg&dH}UaiMP~#*N7g zr*Ox#MEwz5em$$uCG`!Xk0|S>7}M){Ukd1yCxIDnHg{#aOONZEUj7x^!Ze+0?h2)vkm91Xs$k^PmD7rJ9@XLV zV}9Rn{paL?vw99q_j_oCukfLhEMpUX_sf8LjO&K+q|;Mf@)hB7EHCC zHjUq@wXrWTq3N4es#{s>fxK`GR!6r1q z=TDN60o(B}veb1v(`?`MTGCoPlgeQhuA<}`Axb^y+h|#`oNfO!E7Y$~RlL7P;E0)w zRPdFhNmGK=Z+Lw^=S$_uSGDn~oEKoeyte!WElP!PsF9iP~DM2z+- Tw{jZ>ACUeSmKhk}aQ^=Te*?k6 literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_northcarolina.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_northcarolina.gif new file mode 100644 index 0000000000000000000000000000000000000000..a1524693b46c6f371c0f2335b5a19896b64e9402 GIT binary patch literal 1511 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 literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_oklahoma.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_oklahoma.gif new file mode 100644 index 0000000000000000000000000000000000000000..bfcde8382dcb1ad49a411069e598b33649976e6e GIT binary patch literal 1830 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 Z{4ffLcEG9J`c~e}F!SM1UmkDU{{i*0$p-)c literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_rhodeisland.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_rhodeisland.gif new file mode 100644 index 0000000000000000000000000000000000000000..df52af7734b1ca8c0449ee116b3c986186fd61ef GIT binary patch literal 1604 zcmXAoe^8V~7{^b=WD?;7F-$a02{5>>C~8xA(7Xz zx(etWf7I)EW^ZQtR*bi)H@;ICY+AYDsjDfjX~jFG(}r4aRPwgecRu^fv)}KtJF|am zY5AfB{Hg+5hRw9uoKBu|@=i|VdCtX)0^caQ{Gz}Kg3Be0%Igtaf?p8)9>HJV;P)~4 zMrG=>xv8%Mb&|-sT$BUP0=+C>fo>rpsoX5XB9y;00BdRdI0J&)K%s}s6ePf2q0uV z6GA{kx{P#y*clxnC?Oa?P(ctNmO_G%f{=y~#=2tYoB@*vvQy+B$VritAdVoO5<9_3 zCWAT%c2dky!VUenkU)WAff4~DkwB3k(ZC`lqG_<+Lr^1zK8$>X_zdjB&`*#bLkS~^ zAXWny$rvgaDFiEoC7;05t$1xgu)#1eWl(I=(S*rh7=$t?F&QSYEH?hXZ7@*= zHB5$SSeAh?CI5|&CX^*?QIla()1sD1EsI@k5@H(v9r`~pP19mn%(sYP8PuX|mU$NQ z*s?NhOrw9HD0;+}US=a-11=Tl&tHRdF7YoVzUdq~3je z;9_K4sQRa;)^enPkrL7Y-;^8 zIF5^Vo^r(`m!wXLnID=wup_*wy(bks>YSYY-m(oRx^_GAmgd$p{ZLi7qUCZ!@g?cx z!+8~tJsBy;mx8Wfe0kL?caKQTwvCQ0hwS4^&_M0cm|x_-(w2T&e>yh*lG0YX;PPho z;9~FI;mDrET{p#r{gL1Il|EA^mTgG8yr(OBYf;xr0{U?6qAcg)D0lkNh8MbKY+tuK zki4Ms=85cs-%k+_hdJMv3G0J5-Yjf9*Iie5q$&8|voEi_+L?3g&yy$fz`2fBQeUe( z>drWqx#Ggyfyx{4pUqtNR?mdHI=If9<-a9dTX^c&b1MoT`7NV!s#CHh9**@_55&8Z z+M>pc&ls{r#oFyQd+C&+&(~M;$8Xg9zBXY}-Gya6MN!L(QhE|9lKOi&|M2dY=AB79 zd!RfNbG>cOOn)eFdt2ztwexd+{(DJgQt+EdxyVSt)hz{aw0g;tRTt(}eRB(d@ z21JjIGZ$(Gp;i?b zYDGE{>a0LVA)O5yQh|Zu43z57Kp_K#jaJrZg+_`qQov|~MjJBPajFfbs?LZcg-9Di z+Bnh`angyEU85d$0%&?GQd4|IbCor7I0D%D_ z%VL%jSirMDb(w`C$MGBxI3RLB;-J8(7btN^1gr=+2>=Wr51^EGC~T%BI0F?1dK$CB#ab{d5lGjC5&Z^)#}E)hsZS&M#x-dL%pk;nu_0r+>9{PVG(&zpqtS-HF#YC26TYN8Wiy4Xyt2Q-z2K{mS zz*WB=W0o~0d^lRtr5X8ZYi>ocpOVzPIcMEFpJs<~kDpxgrmFh>T~c}O!r}DDbzk3j z`0SECVEMUy_jmo`vtQ!dsVM#2o|sRbI4{4d)sZva5SkIosqXOJ&;XNZd*MmpdDH31 znuc!^x9rer_CBv`=K6ag2HK5np~3gI4BhbbkJR0(D=7UbwY)WGFf(^m#E@pfe@Pw@ zq|xm+P1J_ahjI%x-g#PAl;KN9<@k2Gl<__N#jhUG=;?T4u;J{Dx2sY*tAl3^l#iTo z{T%kPur;r}sv!muZI%W5I)XgxnbChfa|GcFV@-L+*s_x)%{$6Ym6yf#d4JSlx^?us z`*WpAy|+QXV2DlZ-+XX1ZbOO1+H!VTaddZ0K3Ot)`nV-|GS@o$IhUPTW|evVY% z^8Vxu zPSY(rACmv4B>@-;pc1v4N0 zaK~dMTx+$Z$y?xPd+U%VPAr|5L7juS#XAPC>K5MeL(<&Z> z1?}jn{GjdEq=l(63D(G~tBrdWC`XlVZCgCi@iHXa9M!^H^+E1py> O_`CF1FYg(|d;bCD4tE>? literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_southdakota.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_southdakota.gif new file mode 100644 index 0000000000000000000000000000000000000000..06eb5ba5f5d54f706ae58ec88e4edc5a71c769d1 GIT binary patch literal 1904 zcmWlYZ%`8l9){N-kl-Hz1dS(Zf`0>8i2)>DL|BNx9td4f=!yU0&=rH-aZpnPYRU=5U^<&q&b{=VXP$ZAkG~JU)bt(k z()}`E13&|S6vEc-xWMKcR?74ONFSG13nB!F=uyZU1cK45ykZ2!5EO?Hbyi_HieU(b zqh4?oh!QZWMQ|5K{o?#SVZD0CWP79e^AFvVN(xcC2&P1cRfLct)G9)~ zrbL)S43lEiDn{*6$SQ@+AZ!I;3W6vYq+r+zBP4=6lzQ*N%qVJ=VkCl-5Jtf`wYTIY zj!COk5~UJ4g=bwO1ofKj=GMrYH{_HV7_cm-2A4Z*JWE^3!@FC^flq9yrHeY#9@2Cvc;sjihM22PxML=Z)WdPQ4fuCXm&Md%t^ztvqHwDjE@ z?LYEtMB{cV-nmrMlX`0Cq1$zPYKAPu?IkKFe)_+-)_GFvP*u9m=-gE`GiriS>uGHr zt*fWMyE>(B_&^vKeFH-nX+y_!wTWpkGA0w%W^x%!Oq+=@layuPRZkCXCTWwIF+Z|q* z@z)<54#wf6U%&p~bTUqwaWV|;bka_SrWu;?=5Iv--u(RwiR_QSH(^0(%7&h^?7)bO z0p*q6$~5lgHMf0x7ln!&GQI>4T9!z1e=1B*K2o`u4TrBJJW9i$S{|mn7jvUPqPS5j zLj3~k&1Em$Pc)rVKy12Ra_C(Rre2WJx ze{9I?vbvrf%G@JW{WbT;IKctAp^}B|%0d1On>v41TTF8!E_A|x{zOQxSh$ zvsUu!8qWIfhTw{jWuAt6!d=t;`&D_CVc+?68E1dpI+`faZDTyWS+bcZJX6+H01p62 zb4Q*!!j`%!I5SM4+4L;Bb75>>_be3ec!CEeyj5S)#l3jT(g*^<$-I>bsad(+WXidh#-d9>&?|onUZ^+$67IU zR5G>o*<|noK|zBuO(YT>{&$6+Jg6#SugB6K^pUf$@j|#Jza}kQEf_wVc(_ghEw2ne z+=>PDxcXWHug~_(kIt?330CQU9=|f;x2I&!#mg-vKRvge-*DuhhP^vxLfV7@%8d!{A%I{0AY=#VSmqqyg}s}lICyK#}E?WtmcdUZ*zBbyUF) z@W0NgoM`FvlP_M;op?_0%_KMxI}#P5-P|`P%!uw0W6cv`Q@8zpDBG_AEs1`uKyu(D)!79kEm={>ieQO3S<{N8cW%o+ zIdSFUzxd(2J!34NYUR0@f(7ZH%}lZWQS9=`zx6TzDehq<&b#27E8t{jpYaQ~u@+2Y zSn%W8%U7e%?HXwGZ7P=gCzSgH4qJG-;Uqz^*jEs@_=^`?S?vKfe*BTgx_si>l`lN; MvWRs80Ql$s0enE1B>(^b literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_tennessee.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_tennessee.gif new file mode 100644 index 0000000000000000000000000000000000000000..d65998a67ce57ed8e8f990ca3d57e761531c4907 GIT binary patch literal 1843 zcmeIx{ZCU@7zgm%a)J5+wvY4&`Jd9d`YV4yb8K*MM?$K8+^OdO;6B)2hmua8kTIsUHu#OwG! zhn{M^+xQ`FqnSdO&2Ec@LRhVYjbfvab~|CWlenG0aT3P??f?!4aJwmxa1ex>B;0@? zASvLIVgV`Tl5#0&$4Q5qbOVy0K$4_*fB*pkE)XF=!~h~D5F>3;-kqzyrkylro{5 z3soYh5<`^~YUNO?ghdn;EGmNfB52e>qaK=d(5#0RGqhTu%?j-l8^rAp$DxDbfNla3 zA6ADXfY1ZsgvV<1*livh_c$CLH-+#Jq=&j22|Uzn06m_Gk9j}wp32AiaQHv}{R>1R zR6hI#j4_Fb8NB4qV?8wtc9i74m#KHYU+8kP@SNaaTy0nLu%<`u!(R6)MH+r?8gnm} z(*EN03Stj}qKpnkdV8-)mBQun4F(#!u9)|v-QYx;*$OUGc&e$Z*#(@fi> z!duR_wJ^OIP9Fbp$9ot?CvubE@}?Ms?=R;%6c1kLPc@; zGU=hR;D~a`bmq5NqnX!dtj;B^-PfL;5xvQ6NG@m?Y27CK&3u0j<4CX{qj0RTN8Z4T ze>8i}kfHD34Rcofg~5Z^_~EN9g#&&W&X=uMLJO0t3)9<~=(amT)xxt0{j(}3!;(TC zK0Xi~G+nYr!>``U$^XQ+@f&_3Cwy;$t|_}J;qTWwV#uM)(ON}rwea5C?1Dbq+FSYF z%Y}TSZ&0#vLlW(N%dWqU-W{3|>*ObvMwN}_R0VF}&Q3uBl5<%lU**Z@u^~>`x@9*v zBi_-8EVR_Ol@a1A{Zg36+-hu$D3S7?j0i-@LsoTc#gO~E(;;!Z8cQC=-aeO8orG%N zbu`gJ0v8*0gvHgHrb-li-zIfaNBd4i)Ld7npA%)%&wX*I2Yu~5jQMX_?3B@ioV0=} z%usjYQ29zm;>^f`U;{05?D12UGs{& zMjGb5tPMf=*jjF)Nn?05f8N;#P2(rLLR?LT9zU}i6SjHNGnB2NBM(-TCi{y@d#c;A zh9{&0!MUSW?07~X$_eUvcW?@;^jIC5I`1+&1vPZK?+P7`uRTjx`)kovKF4++aV;ph zdw}EWIa+#0@o>JDIyWydetH+K8P`HQmT%{fr<{I~eq8*-Z{=KG`23OjHRdOB IIvt7s7ebX1<^TWy literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_texas.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_texas.gif new file mode 100644 index 0000000000000000000000000000000000000000..ae5013a86be40b7610bf8ae9f761ad009cf0bbea GIT binary patch literal 1423 zcmZ?wbhEHbv|-R-_|Cwf7`0b1>X>HKTFt1fno)Z-f$ZeHn#souqxKpm1JN|>V6 zYb~?)T4o<}%3kY~eax$PuUGN0pyI7j)qA5_&Lvl`O>Wtn3}p12%kDXr-E*$EWodEC zvErV+)l;@sPdQgT=UNL8%sJMx^xl-E$L1{EI%nzLIa}{7UAuMZ+P!PH0@1Oxd#|nC z`+V!(V_Wy0+j{Kz-edRno&%!i=dL}!cJ1CZAbIcoJs^7i{<$H;b0GQt`}--???K=@ z82ldvqai>>2NN3>k`VV_*0nJaCsTiDX(cY6>lGR)M~oTJM%Lub+5Q# z^E{1hn=@BdgszHP`$_lYb=k!3DZbmw1omVUZ(dtb=y>-~Q{#7=)zftu_a*4>n`>>p zz{UYQpqzEyld!<>uZG7SI!UX^R$nfFY=B|g+7u!%b?;#%ul z+a-6CWveX0veqo^xKgRJ?Zu;RgJUO>0z|KJOzSmcx^}tm+{Y8jy}2K+%9RN{6uDIH zuJ-d@u2N2^V7}w37O`?KqwBK$%8Z&SMf@vM8K!zyg{#IyIb}>N%-OkoNwJ5}veat! ziVO2y_HMOYHnnN$%Mf;(DF>!xNgg#Ig?h=$9#-yi%(c zGMR2MXk-+aP~gl~A9zALb)VT0hLzDbMINp@U3X)RSHEp!Oqyz#x9EgA+qAUcqouEP zv#w7&b#+HvVD-B6vu;ZgTNZE4ez$w0U&VuPrMz$JBCr2aoz*d8=kNF1xmDMEIK;)u H!e9*m55Uvt literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_utah.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_utah.gif new file mode 100644 index 0000000000000000000000000000000000000000..fc43b9199a25aa2e35f31c643b326d571a30d2ab GIT binary patch literal 2386 zcmW+#dt4J&7M_Fv;bjsbyw$`PqUah7EWu!tAv_!j!k~hqi-AE)coob&y26IRAY zsj}420_Z&ig{p{96$piaLWL_-gaRg1DqN)^R4@T6a2Q5m7=vLPMhHZKAqpIU5d=mN z1Va!UK?ziWaS9YhPy|B}97Qn{<(R+}7+1zU2n7NZC{Q5)<^snN71shsVFKkCAuxoP zs=+V}$1yAq%fv7O;3$D(0LKU%2RH|UzzINL+yS^0F$KT{zyTl>Dxl!Z!=wrZDvl9u z6gf3&iYXWcFiOHGg`faINd%=(1fVFuxH|?=3}6^QFcQH5$^}NEIG3joj7BjEll3Re}#1uwQI6+}JjS*%Xr*VP{1_u;D zP=KHciYOe=1faJU(*;FUbSPY=T1yhi2Z(hvfGL3P2L>9TG>On8#~4N8Bp^s~s@Sxj z;Kq>u-^B+gk^&S7C<>TLxfESYngPk~DP_t5O;Ki&VoA!zgsK?zT9$J_A}ooRsZ5$8 z7%GpZI1$NEBqyb5f}shT1`G|Z$Q2h?paT&x0}09RwQ;X8?B`7UzquJKg;)=uY}xj< zy~ckK_!yb}V*mc%ii-eEk~9aBvXs*_*NUcDnxRRSAs7ZQ49S`S%a9CBF*IFOVQOSh z8-v>z!p3g5F{F*~ zRE3RY8g1Mp8%^67#>%j*RvUZPW^1%Jo<9Gz!)CtTeC`EJKeJliS5*9uVcwmpe&5*8 z+S+PwbvPVXu7A~Y^XARIZ@%gMcHrsLkuZqE)L+mDCm|18AL88lCt)0-g=`@08N7dIxYlp(u3A6%9 zmO5Oo{HhPH4HJmxnpQ>1+a7OyS)IPVK)E@ucW#0};p+Xxn=#kujeSFLVjp#Xq7(_v z-9Rr{clvSuXiW$daK_SX@=fqh?Gh)X+!HRVNYM=IQ=^5Ow_Z^B2!c*u@Ucj{H^$zM z*zNDzHS>-Y^$bpT*2Jwk`TSj9`r;MU^To>_tka1ew%w;A&ewMwUokoHHqmWa)7b6! zyO#T&{wA-X_~hgmVVzanTH76)bg9!MpPVHVmw1Keq?OAa71rrzD>P+gqI79WkJsH@ z{7fiEnf=AS_6UD(sSg{{H{CJFyA`!o*hCqF!fF#;v|**U5PjQ;TYmc)cZ+Yjt$4o9 z@Nb>=gl(v1#TVgGtUC+uN5k{W6@a z{_$Pq>geV{Z-?`dxUTZ%@Pt2&e*4FS#;(vt@e3bu{CG=p^sf^Y(>|K~L<is$4RZ}ARcHS>^isZmToUJ#rE}5-D|C{C z5zF}VBlx$n8sBdgR3;^~IZVcskDq7wpI)<5_p5ulfq>0z5_Z^#aH*5!G)aHbLy6oILLqouN%jJpcgn-vq zrWc4KD}%fDeCSa<+17%nAF?IJIcKcd{SkM{=bVT1<Wg?C=rEM ze3wRiFolx)ryh$dbaI*0EZ~dU?6eb4F8rHjeQe4>S=uAr^vjRB<{Hhs*ufI7c%4UtUm&tqTJ$9I5 z{YGS_Q*Y#MrCZ^UX6r%OHtk{FVCf7e>6fl2bG_2q^iWlw>*}5?>FEXVtT#&q8_j&b z!&|h_xcCsHtPR}Ru8T55kg{kf!!#CLnNeq2urwYLHFZbT%Z^9xDit03gcoUbB%w_j z2p=u;#q5WZA838tMt|^2iC?*OrN`RjCiwNt!m3McwZS(nU49qt9n0TU8`OVBEBVh- zPkc?8-`mMI9=OrqmY9!5w6FAD^ox*k>gn*i*4DkOq|jOMNsWi-2iWggiGY_>6MAv{ zV9bd8sOwUbJCk94kh`WGO3DiKIOitIAM)7rZnodOtDV8>(rJ2YnHw*PA9OYAv%M31 z-_V`Cl9be-6Z{aXSD}HiH!aD3-40SIt8cLi!-GvoVonrTNd*_~I`mc9&{Ai32 z%looCRuA&MXD_dRD~5Pbl+hoPtG^ez$M3+iQ=L2J?+DDDbzsk}a10%yTUIxT; z1e}m8zUy*M89#3m?&6$cyKIya<8Yk2n3AOox$ga~bRd)3pnO%O%qw~bZ1I6Ei|x6$ NXRt>-y~Pl;{CCO<@iPDb literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_vermont.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_vermont.gif new file mode 100644 index 0000000000000000000000000000000000000000..a3fc2f18a49d2984d6b7d2fb3c917f6cfec824cc GIT binary patch literal 2124 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 JUkCsh{{!aHs>T2S literal 0 HcmV?d00001 diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_wisconsin.gif b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/flag_wisconsin.gif new file mode 100644 index 0000000000000000000000000000000000000000..2838da52cb25e440150ad86efd493eafcc9f48ed GIT binary patch literal 2251 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 + +#import "AppDelegate.h" + +int main(int argc, char * argv[]) +{ + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/states.txt b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/states.txt new file mode 100644 index 000000000..ad6632e6c --- /dev/null +++ b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewFlowLayout2/states.txt @@ -0,0 +1,50 @@ +Alabama +Alaska +Arizona +Arkansas +California +Colorado +Connecticut +Delaware +Florida +Georgia +Hawaii +Idaho +Illinois +Indiana +Iowa +Kansas +Kentucky +Louisiana +Maine +Maryland +Massachusetts +Michigan +Minnesota +Mississippi +Missouri +Montana +Nebraska +Nevada +New Hampshire +New Jersey +New Mexico +New York +North Carolina +North Dakota +Ohio +Oklahoma +Oregon +Pennsylvania +Rhode Island +South Carolina +South Dakota +Tennessee +Texas +Utah +Vermont +Virginia +Washington +West Virginia +Wisconsin +Wyoming \ No newline at end of file diff --git a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewLayoutFromScratch.xcodeproj/project.pbxproj b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewLayoutFromScratch.xcodeproj/project.pbxproj similarity index 94% rename from bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewLayoutFromScratch.xcodeproj/project.pbxproj rename to bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewLayoutFromScratch.xcodeproj/project.pbxproj index 9913e816c..5546b2e24 100644 --- a/bk2ch08p467collectionViewLayoutFromScratch/ch21p748collectionViewLayoutFromScratch.xcodeproj/project.pbxproj +++ b/bk2ch08p467collectionViewLayoutFromScratchSwift/ch21p748collectionViewLayoutFromScratch.xcodeproj/project.pbxproj @@ -93,8 +93,6 @@ C9F1DE2E1803183800AE4AE5 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; C9F1DE2F1803183800AE4AE5 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; C9F1DE321803183800AE4AE5 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - C9F1DE341803183800AE4AE5 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; - C9F1DE351803183800AE4AE5 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; C9F1DE371803183800AE4AE5 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; C9F1DE3E1803183800AE4AE5 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; C9F1DE551803190900AE4AE5 /* flag_alabama.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_alabama.gif; sourceTree = ""; }; @@ -147,15 +145,7 @@ C9F1DE841803190900AE4AE5 /* flag_westvirginia.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_westvirginia.gif; sourceTree = ""; }; C9F1DE851803190900AE4AE5 /* flag_wisconsin.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_wisconsin.gif; sourceTree = ""; }; C9F1DE861803190900AE4AE5 /* flag_wyoming.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = flag_wyoming.gif; sourceTree = ""; }; - C9F1DEBC18031C0400AE4AE5 /* Cell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Cell.h; sourceTree = ""; }; - C9F1DEBD18031C0400AE4AE5 /* Cell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Cell.m; sourceTree = ""; }; C9F1DEBF18031C5200AE4AE5 /* states.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = states.txt; sourceTree = ""; }; - C9F1DEC118031C5F00AE4AE5 /* MyFlowLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyFlowLayout.h; sourceTree = ""; }; - C9F1DEC218031C5F00AE4AE5 /* MyFlowLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyFlowLayout.m; sourceTree = ""; }; - C9F1DEC61803378200AE4AE5 /* MyLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyLayout.h; sourceTree = ""; }; - C9F1DEC71803378200AE4AE5 /* MyLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyLayout.m; sourceTree = ""; }; - C9F1DEC91804942100AE4AE5 /* ViewController2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewController2.h; sourceTree = ""; }; - C9F1DECA1804942100AE4AE5 /* ViewController2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewController2.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -206,21 +196,11 @@ C9F1DE2E1803183800AE4AE5 /* AppDelegate.h */, C9F1DE2F1803183800AE4AE5 /* AppDelegate.m */, C9F1DE311803183800AE4AE5 /* Main.storyboard */, - C9F1DE341803183800AE4AE5 /* ViewController.h */, - C9F1DE351803183800AE4AE5 /* ViewController.m */, 322E0C49198496510089C833 /* ViewController.swift */, - C9F1DEC91804942100AE4AE5 /* ViewController2.h */, - C9F1DECA1804942100AE4AE5 /* ViewController2.m */, 322E0C47198491580089C833 /* ViewController2.swift */, - C9F1DEBC18031C0400AE4AE5 /* Cell.h */, - C9F1DEBD18031C0400AE4AE5 /* Cell.m */, 322E0C4B198498760089C833 /* Cell.swift */, 32FB02BD19841FD5006889DD /* Cell.xib */, - C9F1DEC118031C5F00AE4AE5 /* MyFlowLayout.h */, - C9F1DEC218031C5F00AE4AE5 /* MyFlowLayout.m */, 32FB02C219842C00006889DD /* MyFlowLayout.swift */, - C9F1DEC61803378200AE4AE5 /* MyLayout.h */, - C9F1DEC71803378200AE4AE5 /* MyLayout.m */, 32FB02C01984218C006889DD /* MyLayout.swift */, C9F1DEBF18031C5200AE4AE5 /* states.txt */, C9F1DE54180318F800AE4AE5 /* Flags */,