Отключить масштабирование шрифтов в WKWebView - PullRequest
0 голосов
/ 18 апреля 2019

Я бы хотел использовать WKWebView на iOS, который всегда отображает текст с точным размером шрифта, который я указал, например, 12px.Но я не могу найти способ остановить его от масштабирования шрифтов на основе множества различных переменных, включая ориентацию устройства и содержимое в HTML.

Я пробовал много разных комбинаций параметров вHTML-тег «viewport», например, установка постоянной ширины и установка начальных, минимальных и максимальных масштабов для различных значений.Ничто из этого не мешает веб-представлению изменять шрифты контекстно-зависимыми способами.

Вот пример кода Swift, который иллюстрирует то, что я вижу:

import UIKit
import WebKit

class ViewController: UIViewController {

    @IBOutlet var webView: WKWebView!
    @IBOutlet var webView2: WKWebView!

    override func viewDidLoad()
    {
        super.viewDidLoad()

        let htmlFormatString = "<!DOCTYPE html><html><head><meta name=\"viewport\" content=\"initial-scale=1.0 minimum-scale=1.0, maximum-scale=1.0, user-scalable=no\"/><style type=\"text/css\">p {font-size: 12px;}</style></head><body>%(body)</body></html>"

        let htmlTest1 = htmlFormatString.replacingOccurrences(of: "%(body)", with: "<p>Test paragraph 1.")

        webView.loadHTMLString(htmlTest1, baseURL: URL(string: "http:"))

        let htmlTest2 = htmlFormatString.replacingOccurrences(of: "%(body)", with: "<p>Test paragraph 1.<p>Test paragraph 2.")

        webView2.loadHTMLString(htmlTest2, baseURL: URL(string: "http:"))
    }
}

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

Если вы запустите его на симуляторе в портретном режиме, содержимое в обоих дисплеях будет отображаться одинаковомасштаб.Но затем, если вы поворачиваете в альбомную ориентацию, шрифт нижнего веб-представления значительно больше, чем шрифт верхнего.Из экспериментов я определил, что шрифт становится больше, когда в HTML есть два тега «p».Когда есть только один «р», шрифт меньше.Я не понимаю, к чему это стремится, потому что, если что-то и есть, так как в нижнем веб-представлении больше текста, я бы ожидал, что его уменьшат.В любом случае, я не хочу, чтобы это масштабировалось вообще.Мой дизайнер попросил, чтобы он всегда рисовался с разрешением 12px, несмотря ни на что.

Вы можете увидеть это, даже если вы полностью удалите «голову» из HTML, поэтому у вас нет видового экрана или стиля.

...