SO上有很多答案显示开发人员如何从HTML内容创建字符串或将URL放在字符串中,但我的问题是如何制作HTML字符串。
我正在尝试创建一个以HTML格式返回的字符串,或者至少不显示该URL。
因此,例如Web开发人员会这样做来隐藏URL:
<a href="http://google.com">Visit Us at Google.com!</a>
我可以通过这样做轻松地将其转换为字符串:
NSString *urlLink = @"www.google.com";
NSString *string = [NSString stringWithFormat:@"Visit Us at %@", urlLink];
但是这并没有用我选择的超链接字替换链接。
我知道设备根据你的显示方式决定它是否是一个超链接。即文本字段,文本视图,或者您可以强制打开它等。
我要做的是:
#define APPSTORELINK @"www.appstorelink.com"
@implementation Config
+(NSString *)appstorelink {
return APPSTORELINK;
}
+(NSString *)mmsmetadata {
NSString *string = [NSString stringWithFormat:@"I shared this publication with the <a href=\"http://%@\">[Name of my iPhone App] iPhone App</a>", APPSTORELINK];
return string;
}
所以我可以轻松地在这里或应用范围内调用它:
NSArray *shareItems;
UIImage *snapshot = [self imageFromView:self.view];
shareItems = @[[Config mmsmetadata], snapshot];
UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:shareItems applicationActivities:nil];
activityController.excludedActivityTypes = @[UIActivityTypePostToFlickr, UIActivityTypeAssignToContact, UIActivityTypeMail, UIActivityTypePostToVimeo];
[activityController setCompletionWithItemsHandler:(UIActivityViewControllerCompletionWithItemsHandler)^(NSString *string, BOOL completed) {
简而言之,我怎样才能使字符串HTML格式开箱即用?我主要担心的是我想隐藏URL并用HTML标记替换它,否则如果你有更好的解决方案。在SO上找不到任何东西。
有什么想法?我可能会过度思考这个问题。我确信这是一种更简单的方式
修改
在发布之前我已经知道NSAttributedString,这是我尝试的第一件事。但是,问题不在于设置属性,这就是简单的部分,定义我的问题的部分是如何设置它以便在使用UIActivityViewController中的活动时将 DISPLAY 视为归属
以下是我设置它的方法,但结果与上面相同,所以我认为使用HTML标签会更容易:
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:@"I shared this publication with the Army Pubs iPhone App!"];
NSRange selectedRange = NSMakeRange(0, [string length]);
NSURL *linkURL = [NSURL URLWithString:APPSTORELINK];
[string beginEditing];
[string addAttribute:NSLinkAttributeName
value:linkURL
range:selectedRange];
[string addAttribute:NSForegroundColorAttributeName
value:[UIColor blueColor]
range:selectedRange];
[string addAttribute:NSUnderlineStyleAttributeName
value:[NSNumber numberWithInt:NSUnderlineStyleSingle]
range:selectedRange];
[string endEditing];
return string;
但是,它仍然在消息或邮件编辑器中显示为纯文本。所以想想MFMailComposeViewControllerDelegate是如何设置isHTML的。如果设置为yes,则会删除所有HTML标记并将文本显示为超链接。例如:
MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
mc.mailComposeDelegate = self;
[mc setSubject:emailTitle];
[mc setMessageBody:messageBody isHTML:YES];
我想模仿在UIActivityViewController中调用活动时
这是输出当前即使我使用属性字符串我首先尝试它只是通过剥离HTML标记显示为纯文本但不会使其成为链接
答案 0 :(得分:0)
请参阅attributed strings中的链接选项。
link属性指定传递给NSTextView方法的任意对象 clickedOnLink:atIndex:当用户点击文本范围时 与NSLinkAttributeName属性关联。文本视图 委托对象可以实现textView:clickedOnLink:atIndex:或 textView:clickedOnLink:处理链接对象。否则, 默认实现检查链接对象是否为NSURL 对象,如果是,则在URL的默认应用程序中打开它。