2010-02-02 2 views

ответ

11

Вы должны вызвать -scaleUnitSquareToSize: на представлении документа отдельного кадра, который вы хотите изменить размер, например, основной кадр:

[[[[webView mainFrame] frameView] documentView] scaleUnitSquareToSize:NSMakeSize(1.5, 1.5)]; 
[[[[webView mainFrame] frameView] documentView] setNeedsDisplay:YES]; 
+1

Это приводит к тому, что содержимое обрезается справа на 1/1,5 (т. Е. 2/3) границ обзора, точно так же, как и комментарии к ответу от @Wanderer. Масштабирование супервизора documentView тоже не работает, потому что тогда указатель мыши не работает исправно (как указано в комментариях другого ответа). Итак, ни один из ответов здесь не работает для меня до сих пор (по 10.10.5) –

+0

См. Также: http://stackoverflow.com/questions/23010634/zooming-in-and-out-in-webview-cocoa –

-2

WebView - это NSView, поэтому одним из способов будет to send it a scaleUnitSquareToSize: message.

+0

Поскольку WebView на самом деле довольно сложный набор менеджеров вы не можете просто вызвать '-scaleUnitSquareToSize:' на основном 'WebView' объекте. –

5

Или вы можете попробовать следующее:

- (IBAction)takeZoom:(NSSlider *)sender { 
    WebView *aWebView = [[window.contentView subviews] lastObject]; 
    NSView *clipView = [[[[aWebView mainFrame] frameView] documentView] superview]; 
    float scale = pow(4, [sender floatValue])/(clipView.frame.size.width/clipView.bounds.size.width); 
    [clipView scaleUnitSquareToSize:NSMakeSize(scale, scale)]; 
    [clipView setNeedsDisplay:YES]; 
} 
+0

Настройка масштаб в виде клипа представляется правильным способом для этого. Я слишком устал, чтобы сильно ударить, но предложение Роба выше масштаба, но также оставляет расширение области содержимого прокрутки, поэтому вы получаете масштабированную страницу, но «артефакты игровой площадки» с разбитыми пикселями в правой части веб-представления , Я просто вытащил линии 2,4,5 из вышеуказанной рутины и, похоже, работает. Мое представление отчета масштабируется до веб-представления в диалоговом окне. Спасибо, Странник! –

+2

Это отлично работает для меня! Принятый ответ будет отключен ненадлежащим образом. – Wevah

+0

Вы обнаруживаете, что масштабирование надзора documentView отлично масштабируется? Я вижу, как обрезается правильный и неправильный рефлекс. Вы масштабируете только один раз или несколько раз, как и кнопки увеличения и уменьшения под пользовательским контролем? scaleUnitSquareToSize не работает, как можно было бы ожидать в этом случае, я, наконец, нашел этот Q & A Apple, который пролил некоторый свет https://developer.apple.com/library/mac/#qa/qa2004/qa1346.html, но что-то еще не является " t правильно. Используя эту категорию, я использую по существу: clipView = [documentView superview]; clipView.scale = NSMakeSize (масштаб, масштаб); clipView.needsDisplay = ДА; –

2

Javascript - ваш лучший друг:

[_webview stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.zoom = \"0.5\""]; 
Смежные вопросы