在ImageViewer中打开TTStyledLabel图像

时间:2011-12-26 23:59:49

标签: ios three20 ttstyledtextlabel

当用户点击TTStyledLabel中的图像时,有没有办法让我这样做,它会在three20的图像查看器中打开?

1 个答案:

答案 0 :(得分:1)

基本上是的。由于TTStyledText可以包含h​​tml标签,您可以利用three20导航为您带来优势,您所要做的就是用标签包装img标签,并为从Samsung20的照片查看器派生的控制器设置您自己的映射。

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];

在你的app appate中有一个控制器映射,如下所示:

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的示例。