Reputation: 81
I'm building a free music instrument iPhone app with the Flickr API and ObjectiveFlickr. A random photo from the interestingness list is displayed in the background, but I can't center it without knowing its size. (So I can reset the UIWebView
frame)
I've been researching this for awhile, and it's my first time playing with a web service API. =)
Since I don't know the photo ID until after I receive the response from the interestingness feed, how would I call flickr.photo.getSizes
on the response? This is what I have so far:
- (void)flickrAPIRequest:(OFFlickrAPIRequest *)inRequest didCompleteWithResponse:(NSDictionary *)inResponseDictionary{
int randomResponse = arc4random() % 49;
photoDict = [[inResponseDictionary valueForKeyPath:@"photos.photo"] objectAtIndex:randomResponse];
NSString *photoID = [photoDict valueForKeyPath:@"id"];
NSLog(@"%@",photoID);
NSURL *photoURL = [flickrContext photoSourceURLFromDictionary:photoDict size:OFFlickrMediumSize];
NSString *htmlSource = [NSString stringWithFormat:
@"<html>"
@"<head>"
@" <style>body { margin: 0; padding: 0; } </style>"
@"</head>"
@"<body>"
@"<img src=\"%@\" />"
@"</body>"
@"</html>"
, photoURL];
[webView loadHTMLString:htmlSource baseURL:nil];
}
Upvotes: 2
Views: 266
Reputation: 81
I achieved the behavior I wanted by loading the returned image into a UIImageView. Here's the code, hope it helps someone:
- (void)flickrAPIRequest:(OFFlickrAPIRequest *)inRequest didCompleteWithResponse:(NSDictionary *)inResponseDictionary{
int randomResponse = arc4random() % 49;
photoDict = [[inResponseDictionary valueForKeyPath:@"photos.photo"] objectAtIndex:randomResponse];
NSString *photoID = [photoDict valueForKeyPath:@"id"];
NSLog(@"%@",photoID);
NSURL *photoURL = [flickrContext photoSourceURLFromDictionary:photoDict size:OFFlickrMediumSize];
NSData *receivedData = [[NSData dataWithContentsOfURL:
photoURL] retain];
UIImage *image = [[UIImage alloc] initWithData:receivedData] ;
NSLog(@"%i",image.size);
randomImage.image = image;
//[webView loadHTMLString:htmlSource baseURL:nil];
}
Upvotes: 1