改变 UIWebView 的文本颜色

9

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

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

现在我想要改变HTML页面的背景颜色和文字颜色。我使用以下代码改变了webview的背景颜色:
self._webview.backgroundColor = [UIColor blackColor];
self._webview.opaque = NO;

这个可以实现,但我还想改变我的webview的文本颜色。我该怎么做?


有没有办法通过编程来实现?因为在某些页面上我想要文本颜色是黑色,在某些页面上我想要文本颜色是白色。 - ketansahasrabudhe
如果您使用CSS对文本进行着色,是否会出现问题?您是不是想要更改一个单独的.html文件中的文本颜色为黑色或白色? - janusfidel
我想通过编程方式更改我的HTML文件的颜色。有很多HTML页面,在某些HTML页面中,我希望文本颜色为白色,在某些页面中我希望文本颜色为黑色,这就是为什么我想要更改文本颜色的原因。 - ketansahasrabudhe
6个回答

15

在这段代码中,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]]]; - ketansahasrabudhe
你的编辑器中的 changeColor 是什么?我在我的 CSS 中没有添加任何类似于 changeColor 的类。 - ketansahasrabudhe
你使用CSS还是本地HTML? - Deepesh
@ketansahasrabudhe,请将此.html文件拖入您的项目中。 - Deepesh
兄弟,你太棒了,你帮了我很多,现在它可以工作了...非常感谢你。 - ketansahasrabudhe
显示剩余4条评论

5
[_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里面会有什么内容。 - ketansahasrabudhe

1

我创建了一个方法,可以使用给定的UIColorUIFont正确地包装一些文本内容到HTML body中。

只需将生成的HTML插入到webview中即可:

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

谢谢,我拿了你的代码并从中创建了一个类别 :) - Lord Zsolt

1
这是一个小的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 视图中吗? - user1960169

0

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


-1

试试这个...

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

希望这可以帮到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接