iPhone SDK - как добавить CSS в UIWebView - PullRequest
3 голосов
/ 22 ноября 2011

Я прочитал многие из существующих вопросов и ответов по моей проблеме, но ни один, кажется, не отвечает на нее конкретно и просто.

Я показываю много файлов HTML в своем приложении и хочу использовать CSS, чтобы помочьотформатируйте их.Файл CSS будет храниться локально вместе с файлами HTML.

Я думаю, что я хочу добавить встроенную ссылку CSS - при условии, что это правильный способ сделать это?

Мой код

- (void)viewDidAppear:(BOOL)animated {
[super viewWillAppear:animated];
[adviceContent loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]
                                                                                        pathForResource:[advice objectForKey:@"HTML"] ofType:@"html"]
                                                                           isDirectory:NO]]];
[super viewDidAppear:animated];

}

И я вставил свою ссылку CSS в файл HTML, таким образом, в теги head

Может кто-нибудь объяснить, где я ошибаюсь?Спасибо

1 Ответ

2 голосов
/ 22 ноября 2011

При загрузке HTML вам нужно указать базовый URL для файла css, чтобы ваш контроллер «знал», где находится этот файл CSS.

Вот код, который загружает HTML-строку, которая использует файл CSS. Вы можете загрузить весь CSS из файла или изменить его, как вам нужно.

  // HTML files are stored in the main bundle
  NSBundle *bundle = [NSBundle mainBundle]; 
  NSString *path = [bundle bundlePath];

  NSString *filename = @"none";
  NSString *fullPath = [NSBundle pathForResource:filename ofType:@"html" inDirectory:path];


  // load a HTML from a file
  NSString *chapter_filename = [NSString stringWithFormat:@"Section%d", _chapter];      
        NSString *sectionHTMLPath = [[NSBundle mainBundle] pathForResource:chapter_filename ofType:@"html"];

  NSString* htmlContent = [NSString stringWithContentsOfFile:sectionHTMLPath encoding:NSUTF8StringEncoding error:nil];

  // add a generic template and the css file directive
  NSString* htmlString = @"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> <html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"he\" lang=\"he\"><head><style type=\"text/css\" media=\"all\">@import \"styles.css\";</style><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" /></head><body>%@</body></html>";


  // load the html into a web view 
  NSURL *url = [NSURL fileURLWithPath:fullPath];
  [_webView loadHTMLString:[NSString stringWithFormat:htmlString, htmlContent] baseURL:url];
...