2015-11-25 14 views
11

İçerikOffset iki nokta arasında (lütfen aşağıdaki resme bakın) Swift ile programsal olarak kaydırma görünümümün contentOffset değerini ayarlamak istiyorum.Contentoffset öğesinin yumuşak hareketi UIScrollView Swift

Sorun şu ki, hareket için sorunsuz bir geçiş eklemek istiyorum, ancak bunun için belge bulamadım. İçeriği kademeli olarak azaltmak için bir döngü yapmaya çalıştım ama sonuç çok iyi değil.

Bu örnekte, içerik ofseti kaydırma sonunda 150 px'den azsa, düzgün bir şekilde (animasyonun süresi 1 sn olur), ofset eşit olarak 100'e kadar gider. 150'ye kadar px, 200px'e gider.

Bana ne yapacağınız konusunda yol tarifi (dokümantasyon veya hızlı örnek) sağlayabilirsiniz :) :)

enter image description here

cevap

17

Sen Burada UIView.animations

func goToPoint() { 
    dispatch_async(dispatch_get_main_queue()) { 
     UIView.animateWithDuration(2, delay: 0, options: UIViewAnimationOptions.CurveLinear, animations: { 
     self.scrollView.contentOffset.x = 200 
     }, completion: nil) 
    } 
    } 
+0

Çok teşekkür ederim, Swift 3 sürümünü yapmak için kodunuzu kullandım. edit - Buraya bir cevap olarak göndereceğim çünkü kod burada dağınık durumda. – user3739902

+1

@fatihyildizhan Bu kodu kullandım ve çekicilik gibi çalışıyorum, teşekkürler! Ben aynı şeyi yapmaya çalıştım ama 'dispatch_async (dispatch_get_main_queue())' dır ve animasyon içerikOutset sırasında 0.0'a ayarlandığı için düzgün çalışmadı. Neden düzgün çalışabilmek için 'dispatch_async (dispatch_get_main_queue())' işlevine neden ihtiyacımız olduğunu açıklayabilir misiniz? – Mette

8

kullanabilirsiniz fatihyildizhan kodunun Swift 3 versiyonudur.

 DispatchQueue.main.async { 
     UIView.animate(withDuration: 0.2, delay: 0, options: UIViewAnimationOptions.curveEaseOut, animations: { 
      self.myScrollView.contentOffset.x = CGFloat(startingPointForView) 
      }, completion: nil) 
    } 
İlgili konular