issue while dropping pin to imageview on different devices

耗尽温柔 提交于 2019-12-11 05:56:39

问题


i am dropping pin image on imageview with coordinates so pin set correctly but there is minor position difference in various devices i am sharing my code below

func convertTapToImg(_ point: CGPoint) -> CGPoint? {
    let xRatio = imgView.frame.width / (img?.size.width)!
    let yRatio = imgView.frame.height / (img?.size.height)!
    let ratio = min(xRatio, yRatio)

    let imgWidth = (img?.size.width)! * ratio
    let imgHeight = (img?.size.height)! * ratio

    var tap = point
    var borderWidth: CGFloat = 0
    var borderHeight: CGFloat = 0
    // detect border
    if ratio == yRatio {
        // border is left and right
        borderWidth = (imgView.frame.size.width - imgWidth) / 2
        if point.x < borderWidth || point.x > borderWidth + imgWidth {
            return nil
        }
        tap.x -= borderWidth
    } else {
        // border is top and bottom
        borderHeight = (imgView.frame.size.height - imgHeight) / 2
        if point.y < borderHeight || point.y > borderHeight + imgHeight {
            return nil
        }
        tap.y -= borderHeight
    }

    let xScale = tap.x / (imgView.frame.width - 2 * borderWidth)
    let yScale = tap.y / (imgView.frame.height - 2 * borderHeight)
    let pixelX = (img?.size.width)! * xScale
    let pixelY = (img?.size.height)! * yScale
    return CGPoint(x: pixelX, y: pixelY)
}

then with tap-gesture i have fetched one x y coordinates as below

@objc func tapGesture(_ gesture: UITapGestureRecognizer) {
      let point = gesture.location(in: imgView)
      let imgPoint = convertTapToImg(point)
      print("tap: \(point) -> img \(imgPoint)")
}

then after i am set up pin like below with coordinates

var xCo = 83.0
var yCo = 404.0

let imageView = UIImageView()
imageView.image = #imageLiteral(resourceName: "ic_Pin")
imageView.frame = CGRect(x: xCo - 20, y: yCo - 20, width: 22, height: 22)
imgView.addSubview(imageView)

now i am sharing screen shot of various devices output there is just minor difference with pin position

This is iPhone 5s Screen Shot

This is iPhone 6 Screen Shot

This is iPhone XR Screen Shot

please check screen shot and please help that how to set pin position same on all devices

来源:https://stackoverflow.com/questions/58444595/issue-while-dropping-pin-to-imageview-on-different-devices

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!