Я пытаюсь отобразить SVG-графику в UIWebView для iOS. Однако с изображениями, которые я использую в веб-представлении, добавляется большое количество белого пространства, 100 пикселей пикселей выше и ниже графика. Приведение к изображению половины экрана по вертикали, и вам нужно прокрутить, чтобы получить его полностью в поле зрения.
Я искал высоко и низко по этому вопросу и много раз пробовал. У меня есть «достаточно хороший» обходной путь, который я поделюсь здесь. Я задаю этот вопрос, если у кого-то есть лучшее исправление и помочь любому, кто сталкивается с той же проблемой.
Реальные изображения, которые я использую, - это ноты, созданные другим инструментом (сообщение lilypond обработано inkscape). Однако этот простой прямоугольник, который в два раза шире, чем высокий, показывает ту же самую проблему.
Если вы просмотрите это в Safari или Chrome, то он отобразится отлично, заполнив окно и начиная сверху. Но в UIWebView у этого огромного количества белого пространства выше и ниже него. Если вы удалите атрибут viewBox, тогда случайное дополнительное пробел исчезнет, но это не полезно, так как графическое изображение является миниатюрным. И в любом случае SVG правильный. Вызов [webView sizeThatFits: CGSizeZero]
в webViewDidFinishLoad
возвращает 1024x1120. Не 1024x512, как я ожидал бы
В моем случае я получаю UIWebView для отображения необработанного SVG. Вот те вещи, которые я пробовал, которые не имеют никакого эффекта.
- Wrapping the SVG in HTML
Wrapping the SVG in HTML and adding the following CSS:
* {
margin: 0;
padding: 0;
}
body { overflow: hidden; }
Putting the following code in webViewDidFinishLoading
, which I got somewhere else on StackOverflow.
- (void)webViewDidFinishLoad:(UIWebView *)webView {
CGRect frame = webView.frame;
frame.size.height = 1;
webView.frame = frame;
CGSize fittingSize = [webView sizeThatFits:CGSizeZero];
frame.size = fittingSize;
webView.frame = frame;
}
Частичным обходным путем является добавление атрибута preserveAspectRatio = "xMinYMin meet"
в теге svg.
Это удаляет лишние пробелы в верхней части изображения, но оставляет его внизу. Это лишь частичное обходное решение, как будто оно изначально выглядит правильно, вы все равно можете прокручивать, когда не сможете. Поэтому мне все равно нужно отключить прокрутку, чтобы он выглядел правильно.
Есть предположения?