Ubah ukuran UIView hanya dari ujungnya menggunakan UIPanGestureRecognizer

Saya memiliki garis vertikal (UIView) yang perlu saya ubah ukurannya. Saat ini saya melakukannya menggunakan gerakan mencubit tetapi sekarang saya perlu melakukannya menggunakan gerakan menggesek dan menambah atau mengurangi ketinggian dari sisi tempat saya menggesek. Jadi misalnya jika saya menggesek ke bawah dari AKHIR ATAS garis, ukuran garis harus mengecil hanya dari atas. Bagian bawah harus tetap tertambat pada posisi semula. Bagaimana saya melakukan ini?

Saya juga harus bisa memindahkan gambar, yang sudah saya implementasikan menggunakan UIPanGestureRecognizer juga.

Inilah yang saya mainkan: Saya memiliki UIView kecil di ujung atas garis vertikal dan satu lagi di ujung bawah garis. Saya menggunakan ini sebagai penanda. Sekarang, saya bisa memindahkan penanda teratas ke atas dan ke bawah. Saya perlu mengubah ukuran garis ke jarak antara dua penanda DAN menjaga ujung bawah garis pada posisi yang sama dengan penanda bawah.

Inilah yang saya punya

func draggedViewForTopMarker(sender: UIPanGestureRecognizer) {
      //To move the top marker
        var translation = sender.translationInView(self.view)
        sender.view!.center = CGPointMake(sender.view!.center.x, sender.view!.center.y + translation.y)
        sender.setTranslation(CGPointZero, inView: self.view)
      //Find distance between the markers
        var distanceBetweenMarkers = (sender.view!.center.y + translation.y) - self.bottomMarker.center.y
        print(distanceBetweenMarkers)
        if (distanceBetweenMarkers < 0) {
            distanceBetweenMarkers = distanceBetweenMarkers*(-1)
        }
      //**TRYING** to resize the line to have the same height as the distance between the two markers AND make sure its positioned between the markers and the bottom end of the line is still in the same place as it was originally. 
        var newFrame = CGRectMake(sender.view!.center.x, distanceBetweenMarkers/2, vertical.frame.width, distanceBetweenMarkers)
        vertical.frame = newFrame
    }

Saya juga terbuka untuk pendekatan yang berbeda, atau solusi untuk masalah yang saya hadapi dengan pendekatan ini!

Anda dapat memeriksa Photo Measures Lite di App Store untuk lebih memahami apa yang saya maksud ketika saya mengatakan "ubah ukuran garis dari satu sisi saja".

Terima kasih banyak!


person bobMarshal    schedule 18.12.2015    source sumber


Jawaban (1)


dari pada membuat frame baru anda tinggal mengatur posisi garis y agar sama dengan penanda paling atas, dan tingginya sama dengan jarak antara kedua penanda.

func draggedViewForTopMarker(sender: UIPanGestureRecognizer) {
  //To move the top marker
    var translation = sender.translationInView(self.view)
    sender.view!.center = CGPointMake(sender.view!.center.x, sender.view!.center.y + translation.y)
    sender.setTranslation(CGPointZero, inView: self.view)
  //Find distance between the markers
    var distanceBetweenMarkers = self.topMarker.frame.origin.y - self.bottomMarker.frame.origin.y
vertical.frame.origin.y = self.topMarker.frame.origin.y
vertical.frame.size.height = distanceBetweenMarkers
}

Namun ini hanya akan berfungsi jika kedua penanda dan garis vertikal merupakan subview dari superview yang sama

person Gili Tiko    schedule 27.01.2016