2009-04-24 6 views
5

UIScrollView'ın kaydırma-kaydırma davranışını yeniden üretmek istiyorum, ancak bu sınıfı kullanmak istemiyorum (veya kullanamıyorum). Ne yapabilirim?iPhone UIScrollView uygulamasının kendi özel görünümümde titrek kaydırma davranışını nasıl yeniden oluşturabilirim?

+0

Not: Soru, OpenGL görünümüyle ilgili olduğunu düşündüğüm – Thanks

+0

Doğru, _my_ durumunda OpenGL görünümlerini düşünüyordum. Ancak, aşağıda Roger Nolan'a cevabımı görüyorum - bence çok ilginç olmayan OGL vakaları da var. –

cevap

8

Tamam, bunu UIScrollView dinamiklerini yakalayan kendi kitaplığımı uygulayarak yanıtladı.

Kodum hakkında yararlı olan, koordinat sistemi, animasyon oranı ve kullandığınız belirli kullanıcı arayüzü sınıflarından bağımsız olmasıdır. Seçtiğiniz özel bir görünüm sınıfında kolayca yuvalanabilir.

iPhone'un varsayılan kaydırma-kaydırma davranışı ilginç. Parmağınızı uzun bir süre basılı tutarsanız ve çeşitli yönlerde hareket ettirirseniz, kaydırma hareketini hesaplamak için yalnızca son yönün kullanıldığını görürsünüz. Ancak, bu kodu kendiniz oluşturmaya çalışırsanız, hareket yönünü hesaplamak için son iki noktayı kullanmanın sadece onu kesmeyeceğini çabucak keşfedeceksiniz. Bunun yerine, kodum kısa bir dokunuş öyküsünü sürdürüyor ve dokunmanın bir süre önce ne zaman “olacağını” belirlemek için doğrusal enterpolasyon kullanmaktadır. Bu enterpolasyonlu nokta, hareket vektörünün hesaplanması için temel olarak kullanılır. Bu çok hoş bir etkileşime yol açar.

Kod, github'da şu adreste bulunur: http://gist.github.com/100855. BSD lisansı altında yayınlandı.

+0

Kendi sorunuzu - oldukça hoş bir kodla - sorduktan sonra 2 dakika içinde cevapladınız mı? Bu ilginç kod çok Tamam! –

+0

Evet, Stack Overflow için koşucu olup olmadığını bilmiyordum ama keşfettiğimden beri, onu arayan tek kişi olmadığımı keşfettim, yardımcı olacağını düşündüm. Daha iyi bir forum var mı? –

0

Peki UIScrollView sizin için işe yaramadı? Bu sınıf

+0

Bir oyun için OpenGL görünümüm var ve viewport'u UIScrollView'a benzer bir şekilde kontrol edebilmek istedim ... –

0

Dave, bazı kod ile kendi soruya cevap verilecekdir ettik ama bakın ... oldukça esnektir, ihtiyacın olanı vermek Aşağıdaki ayar vermez:

myScrollView.bounces = YES; 
myScrollView.pagingEnabled = YES; 
myScrollView.directionalLockEnabled = YES; 

Özellikle, bunu directionLockEnabled'u yeniden oluşturduğunuz gibi geliyor. Belki neden UIScrollView kullanamadığınızı anlamak daha ilginç bir sorundur :-)

+0

Yukarıdaki yorumuma bakın. Davranışı UIScrollView'ın gidemediği bir bağlamda yeniden üretmeye çalışıyorum (veya en azından gitmemeli.) –

+0

(Ve: Yaptığım şeyin sadece birkaç özellik belirlemeyle aynı olduğuna dikkat etmeliyim. bir kaydırma görünümünde.Yaptığım buysa - iyi, ben yapardım. :-) –

+0

... ve ben bununla ilgileniyorum ;-) –

0

Bu harika! Kaydırılabilir görünümün 1902-2037 aralığında bir günlük grafik değer verileri olduğu bir uygulamada kullandım, böylece bir UIScrollView etkili olmaz.

İlgili konular