Após as adições à classe NSAttributedString do iOS 7, agora é possível criar strings atribuídas usando HTML.
Por exemplo:
// Create an NSURL pointing to the HTML file
NSURL *htmlString = [[NSBundle mainBundle]
URLForResource: @"helloworld" withExtension:@"html"];
// Transform HTML into an attributed string
NSAttributedString *stringWithHTMLAttributes = [[NSAttributedString alloc] initWithFileURL:htmlString options:@{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType} documentAttributes:nil error:nil];
// Instantiate UITextView object
UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(20,20,self.view.frame.size.width,self.view.frame.size.height)];
// Add attributed string to text view
textView.attributedText=stringWithHTMLAttributes;
// Add the text view to the view hierarchy
[self.view addSubview:textView];
Duas coisas a serem observadas aqui: (1) este é um uso aproximado e pronto do UITextView – consulte esta postagem do blog anterior para uma implementação melhor (2) você precisará salvar um arquivo anexo chamado ‘helloworld.html’ para que isso funcione.
Aqui está o arquivo helloworld.html:
<html><p>Hello <i>World</i></p></html>
Assim como HTML, você pode usar arquivos RTF e RTFD para criar strings atribuídas, usando NSRTFTextDocumentType e NSRTFDTextDocumentType respectivamente no lugar de NSHTMLTextDocumentType.
Finalmente, você deve levar em consideração as seguintes notas da Apple: “Chamar [este método] a partir do thread principal funciona (mas ainda pode expirar se o HTML contiver referências a recursos externos, o que deve ser evitado a todo custo). O HTML O mecanismo de importação serve para implementar algo como markdown (isto é, estilos de texto, cores e assim por diante), não para importação geral de HTML. “
Este aviso da Apple não significa, entretanto, que você não pode usar CSS; na verdade, você pode transformar arquivos HTML com arquivos CSS vinculados em NSAttributedStrings, abrindo a porta para a substituição do uso de UIWebView em aplicativos de eBook pelo uso de UITextViews.