2015-12-28 6 views
0

Я новичок в IOS Программирование от Android Я пытаюсь получить X, Y Координаты для двойного касания на экране, но мне нужны координаты по отношению к самому изображению, а не к изображение.IOS X, Y координаты с изображения

Это мой взгляд код контроллера

class ThirdViewController: UIViewController, UIScrollViewDelegate 
{ 
@IBOutlet var scrollView: UIScrollView! 
@IBOutlet weak var imageView: UIImageView! 
var firstPass:String! 
var secondPass:String! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.scrollView.minimumZoomScale=1.0 
    self.scrollView.maximumZoomScale=20.0 
    let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: Selector("tapAction:")) 
    tapGestureRecognizer.numberOfTapsRequired=2 
    self.imageView.userInteractionEnabled = true 
    self.imageView.addGestureRecognizer(tapGestureRecognizer) 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 
func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? { 
    return self.imageView 
} 

func tapAction(sender: UITapGestureRecognizer) { 
    let touchPoint = sender.locationInView(self.imageView) 
    let Z1:String = String(touchPoint.x) 
    let Z2:String = String(touchPoint.y) 
    print("YES It Works X= " + Z1 + " Y= " + Z2) 

    } 
    print("It Works X= " + Z1 + " Y= " + Z2) 
} 


} 

Это работает нормально, и когда дважды постучала печатает координаты

изображение является PNG внутри ImageView, который в свою очередь, находится внутри Scrollview

PNG имеет размеры 6400px X 4100px, но если я дважды коснувшись в правом нижнем углу изображения, а не получаю 6400,4100, я получаю 478,415, поэтому он, очевидно, использует координаты с изображения.

В андроида я хотел бы использовать PointF, чтобы получить эти

Есть ли эквивалент в Swift

Я использую Xcode 7 и Swift 2.0

Любая помощь ценится

Марк

+0

Прошло некоторое время с тех пор, как я использовал прокрутки, и я далеко от своего компьютера, поэтому я не могу проверить, но я считаю, что вы должны добавить self.scrollView.contentOffset для touchPoint. –

+0

Потому что вы получаете координату точки, а не координату пикселя. Вам нужно будет перевести это самостоятельно. Используйте размер изображения (px) и размер экрана устройства (или фреймворк imgview) и вычислите его. – tskulbru

+0

Благодарим за помощь в любых идеях или указателя на места, где я вижу, как это делается, и как это будет обрабатывать различные размеры устройств и разрешение для разных устройств, поскольку это универсальное приложение. –

ответ

0

Вам необходимо учесть следующие две вещи:

  1. Размер изображения
  2. Размер рамки (т. imageView size)

При этом вам необходимо рассчитать фактическую точку соприкосновения.

После кода может помочь вам:

var touchPoint = gestureRecognizer.locationInView(self.photoImageView) 

touchPoint.x = touchPoint.x * (photoImageView.image?.size.width)!/photoImageView.frame.width 
touchPoint.y = touchPoint.y * (photoImageView.image?.size.height)!/photoImageView.frame.height 

print("Touched point (\(touchPoint.x), \(touchPoint.y)") 

Надеется, что это помогает.