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
}
我正在从服务器获取 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
}