【问题标题】:Change textcolor of UIWebView更改 UIWebView 的文本颜色
【发布时间】:2012-07-02 10:16:21
【问题描述】:

我正在制作一个 epub 阅读器,我正在将我的webview 中的 HTML 页面加载到其中:

[_webview loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:_pagesPath]]];

现在我想更改 HTML 页面的背景颜色和文本颜色。我使用改变了我的 webview 的背景颜色,

self._webview.backgroundColor = [UIColor blackColor];
self._webview.opaque = NO;

这行得通,但我也想更改我的 webview 的文本颜色。我该怎么做?

【问题讨论】:

  • 有什么办法可以编程吗?因为在某些页面上我希望文本颜色为黑色,而在某些页面中我希望文本颜色为白色。
  • 如果你用css给你的文字上色会有问题吗?您的意思是要更改 ONE SINGLE .html 的文本颜色为黑色还是白色?
  • 我想以编程方式更改我的 html 文件的颜色。有很多 html 页面,在一些 html 页面中我希望文本颜色为白色,在某些页面中我希望文本颜色为黑色,这就是我想更改文本颜色的原因。

标签: iphone ipad uiwebview background textcolor


【解决方案1】:

在此代码中,color:#fff 标签用于文本颜色#fff 使用黑色

NSString *webStr =@"Your text use";

[self._webview  loadHTMLString:[NSString stringWithFormat:@"<div id ='foo' align='left' style='line-height:18px; float:left;width:300px; font-size:13px;font-family:helvetica;background-color:transparent; color:#fff;>%@<div>",webStr] baseURL:nil]; 

如果你使用本地html使用

 NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"html"];

NSString* text = [NSString stringWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@",htmlFile);

NSLog(@"Hello");

[self._webview  loadHTMLString:[NSString stringWithFormat:@"<html><body bgcolor=\"#000000\" text=\"#FFFFFF\" face=\"Bookman Old Style, Book Antiqua, Garamond\" size=\"5\">%@</body></html>", text] baseURL: nil];

【讨论】:

  • 我正在从我的机器本地加载 html 文件,[_webview loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:_pagesPath]]];
  • 您的编辑中的changeColor 是什么?我没有在我的 css 中添加任何像 changeColor 这样的类
  • 你是用css还是本地html
  • 是的,我正在从我的本地机器加载文件,[_webview loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:_pagesPath]]]; 其中_pagesPath/Users/krunal/Library/Application Support/iPhone Simulator/5.0/Applications/D414BC19-C005-4D93-896D-A6FB71DE4D21/Documents/first.html 这里first.html 包含黑色文本,我想将该文本颜色更改为白色。
  • @ketansahasrabudhe,请把this.html拖到你的项目中
【解决方案2】:
[_webview loadHTMLString:[NSString stringWithFormat:@"<html><body style=\"background-color: white; font-size: 17; font-family: HelveticaNeue; color: #ffffff\">%@</body></html>", strDataFromHTML] baseURL: nil]; 

【讨论】:

  • 老兄,我正在从我的模拟器路径中读取一个 html 文件,例如 /Users/krunal/Library/Application Support/iPhone Simulator/5.0/Applications/D414BC19-C005-4D93-896D-A6FB71DE4D21/Documents/first.html,我不知道 first.html 里面的内容是什么
【解决方案3】:

I made a method 将一些文本包装在 HTML 正文中,并具有给定 UIColorUIFont 的正确样式。

只需将生成的 HTML 弹出到 webview 中:

NSString * htmlString = [MyClass htmlFromBodyString:@"an <b>example</b>"
                                           textFont:[UIFont systemFontOfSize:10]
                                          textColor:[UIColor grayColor]];
[webView loadHTMLString:htmlString baseURL:nil];

【讨论】:

  • 谢谢,窃取了您的代码并从中创建了一个类别:)
【解决方案4】:

这是一个小的 Swift 扩展来处理这个问题:

import UIKit

extension String
{
    func htmlFormattedString(font:UIFont, color: UIColor) -> String
    {
        var numberOfColorComponents:Int = CGColorGetNumberOfComponents(color.CGColor)
        var colorComponents = CGColorGetComponents(color.CGColor)

        var colorHexString = ""
        if numberOfColorComponents == 4 {
            var red = colorComponents[0] * 255
            var green = colorComponents[1] * 255
            var blue = colorComponents[2] * 255

            colorHexString = NSString(format:"%02X%02X%02X", Int(red), Int(green), Int(blue)) as String
        } else if numberOfColorComponents == 2 {
            var white = colorComponents[0] * 255

            colorHexString = NSString(format:"%02X%02X%02X", Int(white), Int(white), Int(white)) as String
        } else {
            return "Color format noch supported"
        }

        return NSString(format: "<html>\n <head>\n <style type=\"text/css\">\n body {font-family: \"%@\"; font-size: %@; color:#%@;}\n </style>\n </head>\n <body>%@</body>\n </html>", font.familyName, String(stringInterpolationSegment: font.pointSize), colorHexString, self) as String
    }
}

【讨论】:

  • 您好,您能告诉我如何在通过此扩展后将字符串加载到 Web 视图
【解决方案5】:

尝试在您的 HTML 文件中添加您从服务器获取的代码...然后只有您可以更改文本颜色...或在您的 HTML 文件之前添加一些 HTML 代码以更改文本的颜色

【讨论】:

    【解决方案6】:

    试试这个...

    1. 解析html文件。
    2. 根据您的要求显示内容。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多