Swift: 如何仅更改 <img> 或 webView 中的图像大小

Swift: How to change only <img> or image sizes in webView

我正在从服务器获取 HTML 并将其显示在 UIWebView.The 中 "Scale Page to fit" 由于要求而未选择选项。 UIWebView 宽度等于屏幕宽度,高度根据内容而变化。 HTML 中的图像标签包含一些内联样式,这在 webView 视图中造成了一些问题。 附上截图

在第一张图片中,您可以看到图片很小,因为它的内联样式设置为较小的尺寸。但是第二张图片比较大,所以图片越界了。

有没有办法控制图片的宽度等于屏幕宽度/UIWebview宽度?

这是我用来省略 HTML 中的宽度和高度的代码。 uiwebview然后调整屏幕宽度内的图像

func HTMLImageCorrector(HTMLString: String) -> String {
    var HTMLToBeReturned = HTMLString
    while HTMLToBeReturned.rangeOfString("(?<=width=\")[^\" height]+", options: .RegularExpressionSearch) != nil{
        if let match = HTMLToBeReturned.rangeOfString("(?<=width=\")[^\" height]+", options: .RegularExpressionSearch) {
            HTMLToBeReturned.removeRange(match)
            if let match2 = HTMLToBeReturned.rangeOfString("(?<=height=\")[^\"]+", options: .RegularExpressionSearch) {
                HTMLToBeReturned.removeRange(match2)
                let string2del = "width=\"\" height=\"\""
                HTMLToBeReturned = HTMLToBeReturned.stringByReplacingOccurrencesOfString( string2del, withString: "")
            }
        }

    }

    return HTMLToBeReturned
}

Swift 3

extension String {

func HTMLImageCorrector() -> String {
    var HTMLToBeReturned = self
    while HTMLToBeReturned.range(of: "(?<=width=\")[^\" height]+", options: .regularExpression) != nil{
        if let match = HTMLToBeReturned.range(of: "(?<=width=\")[^\" height]+", options: .regularExpression) {
            HTMLToBeReturned.removeSubrange(match)
            if let match2 = HTMLToBeReturned.range(of: "(?<=height=\")[^\"]+", options: .regularExpression) {
                HTMLToBeReturned.removeSubrange(match2)
                let string2del = "width=\"\" height=\"\""
                HTMLToBeReturned = HTMLToBeReturned.replacingOccurrences(of: string2del, with: "style=\"width: 100%\"")
            }
        }

    }

    return HTMLToBeReturned
}
}

您可以为 HTML 正文添加样式:

let styleContent = "<html><head><style>img{width:100%;};</style></head>" 
+ "<body style='margin:0; padding:0;'>" + (your html body) + "</body></html>";

这是 HTMLImageCorrector 的 swift 4 版本:

func HTMLImageCorrector(HTMLString: String) -> String {
    var HTMLToBeReturned = HTMLString
    while HTMLToBeReturned.range(of: "(?<=width=\")[^\" height]+", options: .regularExpression) != nil{
        if let match = HTMLToBeReturned.range(of:"(?<=width=\")[^\" height]+", options: .regularExpression) {
            HTMLToBeReturned.removeSubrange(match)
            if let match2 = HTMLToBeReturned.range(of:"(?<=height=\")[^\"]+", options: .regularExpression) {
                HTMLToBeReturned.removeSubrange(match2)
                let string2del = "width=\"\" height=\"\""
                HTMLToBeReturned = HTMLToBeReturned.replacingOccurrences(of:string2del, with: "")
            }
        }
    }

    return HTMLToBeReturned
}