繁体   English   中英

如何在UIWebView中找到图像的位置

[英]how do I find the position of an image in a UIWebView

我有一个UIWebView,其中有一个UITapGestureRecognizer,基本上在我的点击手势识别器中,我具有:

- (CGPoint) pointsForImage:(UIGestureRecognizer *)sender
{
    CGPoint pt = [sender locationInView:self];

    NSString * offsetTop = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).offsetTop", pt.x, pt.y
                          ];

    NSString * offsetLeft = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).offsetLeft", pt.x, pt.y
                      ];

    NSString * scrollTop = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).parentNode.scrollTop", pt.x, pt.y
                              ];

    NSString * scrollLeft = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).parentNode.scrollLeft", pt.x, pt.y
                             ];


    float x = [[self stringByEvaluatingJavaScriptFromString:offsetTop] floatValue] - [[self stringByEvaluatingJavaScriptFromString:scrollTop] floatValue];
    float y = [[self stringByEvaluatingJavaScriptFromString:offsetLeft] floatValue] - [[self stringByEvaluatingJavaScriptFromString:scrollLeft] floatValue];

    CGPoint point = CGPointMake(x, y);
    return point;
}

基本上我想做的是找到图像的左上角x和y位置。 不是相对于UIWebView而是相对于内容视图。 可以这么说,图像的位置向下1000像素,但是我现在正在向下浏览UIWebView的一半,因此我想看到的数字是200。我希望这很有意义

实际上, UIWebView具有UIScrollView 您可以使用scrollView属性访问UIWebViewUIScrollView 然后获取scrollViewcontentOffset 最后,您获得了scrollViewcontentOffset以及相对于UIWebView的图像位置,您可以计算所需的点。

试试这段Javascript:

下面的stringByEvaluatingJavaScriptFromString:

function getPosition(element){
    var el = element;
    var pos = [el.offsetLeft, el.offsetTop];
    var parent = el.offsetParent;
    if (parent != el) { 
      while (parent) {  
        pos[0] += parent.offsetLeft; 
        pos[1] += parent.offsetTop; 
        parent = parent.offsetParent;
      }
    }
    return pos;
}
getPosition(YourImageElement);

您将获得图像位置返回。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM