TheRanking/theranking-ios-candidates — pull request #7 by Juanpe (2014-11-21 09:11:27+00:00)
Title: Test ready to review

When the user launches our app, he can see a list of most popular photos from 500px, ordered by rating score from higher to lower. To improve the performance and user experience, the list is paginated with 20 items per page. When the user scrolls to bottom of the list, automatically, if there are more photos, the app fetch the next page and reloads the list when we receive the data. All pictures are loaded asynchronously, using a third party library called SDWebImage. For handle the dependence I've used Cocoapods. The user can select one picture from the list to see more info about it also.

In the more info view, the user can see the photo preview and in the bottom, he can see the avatar and username of author and a button that expands the details view with a vertical animation. This view contains the photo description, camera and lens used to take a picture, if is available, and a mapview with photo location, if is available.

Featured list:
- Use CoreData as cache's storage. When user select one picture, the app in first time search the photo in database, if isn't available, we request the photo at server and save the data on database to next times.
- Design Patterns. I've used the singleton pattern to CoreData Connector object.
- In the view of more info about picture, I've added two gestures recognizers:
* Single Tap: Shows or hides UI elements to the user can see only the photo.
* Double Tap: When user pinch the photo to scale it, with double tap restores the photo at original scale.