Открытие изображений TTStyledLabel в ImageViewer
Могу ли я сделать так, чтобы, когда пользователь нажимает на изображение, которое находится в TTStyledLabel, оно открывалось в программе просмотра изображений Three20?
1 ответ
В основном да. Так как TTStyledText может содержать html-теги, вы можете использовать навигацию Three20 для своего преимущества, все, что вам нужно сделать, это обернуть тег img тегом и установить собственное отображение для контроллера, полученного из средства просмотра фотографий Three20.
NSString* kText = @"This is a test of styled labels. <a href=\"yourapp://photo/http%3A%2F%2Fsomeserver.com%2Fsmiley.png\"><img src=\"http://someserver.com/smiley.png\"/</a>";
TTStyledTextLabel* label1 = [[[TTStyledTextLabel alloc] init] autorelease];
label1.text = [TTStyledText textFromXHTML:kText lineBreaks:YES URLs:YES];
в вашем приложении делегат имеет отображение для вашего контроллера, как это:
TTNavigator* navigator = [TTNavigator navigator];
TTURLMap* map = navigator.URLMap;
[map from:@"yourapp://photoViewer/(initWithPhotoUrl:)" toViewController:[TTWebController class]];
контроллер представления фотографий должен иметь этот метод init:
-(id)initWithPhotoUrl:(NSString*)photoURL {
self = [self initWithNibName:nil bundle:nil];
if (self) {
NSString *unencodedURL = [photoURL gtm_stringByUnescapingFromURLArgument];//this is where you decode the string (notice we encode it in the html). Google toolbox has a nice category for Strings to encode and decode urls see: http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/GTMNSString%2BURLArguments.h?r=373
}
return self;
}
Внутри этого initWithPhotoUrl: вам нужно создать источник фотографий - пожалуйста, обратитесь к примеру TTCatalog для примера того, как создать источник MockPhotoSource.