Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在不同设备上将pin码放到imageview时出现问题_Ios_Swift_Uiimageview_Uiimage_Uitapgesturerecognizer - Fatal编程技术网

Ios 在不同设备上将pin码放到imageview时出现问题

Ios 在不同设备上将pin码放到imageview时出现问题,ios,swift,uiimageview,uiimage,uitapgesturerecognizer,Ios,Swift,Uiimageview,Uiimage,Uitapgesturerecognizer,我在imageview上用坐标放置pin图像,以便正确设置pin,但在各种设备中存在微小的位置差异,我在下面分享我的代码 func convertTapToImg(_ point: CGPoint) -> CGPoint? { let xRatio = imgView.frame.width / (img?.size.width)! let yRatio = imgView.frame.height / (img?.size.height)! let ratio =

我在imageview上用坐标放置pin图像,以便正确设置pin,但在各种设备中存在微小的位置差异,我在下面分享我的代码

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)
}
然后,在我设置好销后,如下图所示,使用坐标

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)
现在我正在分享各种设备输出的屏幕截图,只是引脚位置略有不同


请检查屏幕截图,并帮助了解如何在所有设备上设置相同的pin位置

有人请帮助我解决此问题有人请帮助我解决此问题
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)