2011-06-02 14 views
10

Estoy tratando de encontrar una manera de detectar cómo se acerca una persona en una aplicación web, de modo que cuando hacen clic para abrir un menú, el menú permanece del mismo tamaño independientemente del zoom. Para hacer eso, necesito poder escalar el tamaño del menú de forma adecuada en relación con el zoom. ¿Hay alguna forma de hacer esto?Detección de escala de zoom de iPad

+0

Buscando responder a esta pregunta, después de investigar mucho. Estableciendo una recompensa. –

Respuesta

6

Primero, todo UIWebView tiene como subvista UIScrollView. Por lo tanto, con el fin de conseguir que se podría hacer lo siguiente:

for (UIView * v in [_webView subviews]) { 

    if ([v isKindOfClass:[UIScrollView class]]) { 
     UIScrollView * s = (UIScrollView*)v; 
     // use the scrollview 
    } 

} 

Después de que se puede utilizar el UIScrollView para averiguar la relación de zoom. Por desgracia, la propiedad zoomScale no nos dice, en este caso, lo que queremos, pero podemos utilizar el contentSize y la frame del ScrollView, como las siguientes:

CGFloat zoomScale = s.contentSize.width/s.frame.size.width; 

Después de eso, supongo que quieres para decirle a su código de javascript acerca de este zoomScale. Podría usar el siguiente código:

[_webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"yourJSZoomScaleVar = %f;", zoomScale]]; 

Hope it helps!

+0

Lo siento, sé que lo estaba buscando en el contexto de una página web real. La investigación adicional sugiere que será alguna derivación de window.innerWidth/screen.width. Tendremos la oportunidad de verlo más mañana. –

+0

¡Esto realmente ayuda! ¡Gracias! – Mason

Cuestiones relacionadas