Assignment #4 Task #8

Please note, this blog entry is from a previous course. You might want to check out the current one.

Whenever a photo’s image appears on screen, it should initially be zoomed to show as much of the photo as possible with no extra, unused space. It is not necessary to continue to do this as the user rotates the device or zooms in and out on the photo by pinching.

To solve that we check what the zoom scales would be when we would display the complete width or height of the image, and set the actual scale to the larger value:

    double wScale = self.scrollView.bounds.size.width / image.size.width;
    double hScale = self.scrollView.bounds.size.height / image.size.height;
    if (wScale > hScale) self.scrollView.zoomScale = wScale;
    else self.scrollView.zoomScale = hScale;

The complete code for this task is available at github.

FacebooktwitterredditpinterestlinkedintumblrmailFacebooktwitterredditpinterestlinkedintumblrmail

Assignment #4 Task #7

Please note, this blog entry is from a previous course. You might want to check out the current one.

Make sure the photo’s title is somewhere on screen whenever you are showing the photo image to the user.

Currently we have put some common code for handling and formatting data from FlickrFetcher into the common-table-view-controller class. Now we need this code also in a generic view controller. Thus we need to move that part into a more generic helper class and change those methods to class methods.

Now we can easily set the title of the window using the class method of our “new” generic helper class.

    self.navigationItem.title = [FlickrData titleOfPhoto:self.photo];

The complete code for this task is available at github.

FacebooktwitterredditpinterestlinkedintumblrmailFacebooktwitterredditpinterestlinkedintumblrmail

Assignment #4 Task #6

Please note, this blog entry is from a previous course. You might want to check out the current one.

When the user chooses a photo from any list, display its image inside a scrolling view that allows the user to pan and zoom (a reasonable amount). You obtain the URL for a Flickr photo’s image using FlickrFetcher’s urlForPhoto:format: (use Large).

Inside your iPhone story board drag out a new view controller, add a scroll view and inside an image view. Create a new class for the view controller and connect outlets for the scroll and image view.

Now create a model to hold the photo data:
Continue reading “Assignment #4 Task #6”

FacebooktwitterredditpinterestlinkedintumblrmailFacebooktwitterredditpinterestlinkedintumblrmail

Assignment #4 Task #5

Please note, this blog entry is from a previous course. You might want to check out the current one.

Any list of photos should display the photo’s title as the table view cell’s title and its description as the table view cell’s subtitle. If the photo has no title, use its description as the title. If it has no title or description, use “Unknown” as the title.

Similar to task #3 we create two helper functions:
Continue reading “Assignment #4 Task #5”

FacebooktwitterredditpinterestlinkedintumblrmailFacebooktwitterredditpinterestlinkedintumblrmail

Assignment #4 Task #4

Please note, this blog entry is from a previous course. You might want to check out the current one.

When the user chooses a place from the list obtained in Required Task #1, you must query Flickr again to get an array of 50 recent photos from that place and display them in a list. Do this using the FlickrFetcher method photosInPlace:maxResults: (it returns an array of dictionaries, each of which contains info about a photo).

In the iPhone storyboard we add a new table view controller, add a new class for it and set it in storyboard. From the cell inside the top-places table view controller create a push segue to the new table view controller. Don’t forget to set the style and the reuse identifier of the cell of the new table view controller.
Continue reading “Assignment #4 Task #4”

FacebooktwitterredditpinterestlinkedintumblrmailFacebooktwitterredditpinterestlinkedintumblrmail

Assignment #4 Task #3

Please note, this blog entry is from a previous course. You might want to check out the current one.

Anywhere a place appears in a table view in your application, the most detailed part of the location (e.g. the city name) should be the title of the table view’s cell and the rest of the name of the location (e.g. state, province, country, etc.) should appear as the subtitle of the table view cell.

The task hints that we will have to use this functionality somewhere else, too. Thus we create two helper functions for the title and the subtitle of the table cells. For both functions we look for the place identifier and cut it into pieces. For the title we take the first piece. For the subtitle we create a new array only using the other pieces and paste them together again:
Continue reading “Assignment #4 Task #3”

FacebooktwitterredditpinterestlinkedintumblrmailFacebooktwitterredditpinterestlinkedintumblrmail

Assignment #4 Task #2

Please note, this blog entry is from a previous course. You might want to check out the current one.

Create a UITabBarController-based user-interface with two tabs. The first shows a UITableView with the list of places (in alphabetical order) obtained in Required Task #1. The second shows a UITableView with a list of the 20 most recently viewed photos.

Go to the iPhone storyboard, remove the existing view controller and add a tab bar controller. Remove the two new view controllers by replacing them with table view controllers and wire them up using relationship segues. Set the identifier of the tab bar item of the first controller to “Top Rated”, the second one to “Recents”. Change the style of the table cells to “Subtitle” and set the identifier of the cell of the first controller to “Top Places Cell” and of the second one to “Recent Photos Cell”
Continue reading “Assignment #4 Task #2”

FacebooktwitterredditpinterestlinkedintumblrmailFacebooktwitterredditpinterestlinkedintumblrmail