2013-08-25 26 views
6

Başlığın biraz kafa karıştırıcı olduğunu anladığımdan, bunu açıklamak için elimden gelenin en iyisini yapacağım. Sabit bir genişliği 100 olan bir UIView ve 0'dan başlayan değişken bir yüksekliğim var. Yapabileceğim şey, parmağımı UIView'in tabanından ekranın üst kısmına ve UIView'e doğru sürüklemektir yüksekliğini değiştirir/parmağımın pozisyonuna uzanır. Eğer hala karmaşıksa, onu bir şeyin altında bir kâğıt şeridi olarak hayal edin.UIView öğesinin parmağınızın üst kısmındaki parmağınızı değiştirmek için değiştirme yüksekliği

Yardımcı olabilirseniz, bu gerçekten harika olur. Çok zor olması gerektiğini düşünmüyorum, ama sadece yeni başlayan biriyim ve bunu açıklamamış olsam bile anlayabiliyorum!

+0

Görünümü her zaman tam yükseklikte yapabilirim, ancak görünümünde yüksekliği değişen bir CALayer var. –

+0

Bunu yapmayı nasıl yaparım? – user2397282

+0

Jest tanıyıcılarına baktınız mı? – Wain

cevap

9

Bu, bir UIPanGestureRecognizer ve biraz matematik ile düz ileri doğru olmalıdır. süper görünüm için init yöntemine

UIPanGestureRecognizer * pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)]; 
pan.maximumNumberOfTouches = pan.minimumNumberOfTouches = 1; 
[self addGestureRecognizer:pan]; 

ve yöntemi tanımlayın: Doğru çerçeve (adını _viewToChange kullanarak, bu nedenle daha sonra görünümü ile Yenisini ediyorum) için görünümünü değiştirmek için, sadece ekleyin:

- (void)pan:(UIPanGestureRecognizer *)aPan; { 
    CGPoint currentPoint = [aPan locationInView:self]; 

    [UIView animateWithDuration:0.01f 
        animations:^{ 
        CGRect oldFrame = _viewToChange.frame; 
        _viewToChange.frame = CGRectMake(oldFrame.origin.x, currentPoint.y, oldFrame.size.width, ([UIScreen mainScreen].bounds.size.height - currentPoint.y)); 
        }]; 
} 

Bu, kullanıcıların parmağı hareket ettikçe görünümü canlandırabilir. Umarım yardımcı olur!

+0

Bu işe yarıyor, teşekkürler! Görünümün yüksekliğine nasıl bir maksimum ve bir dakika ekleyebileceğimi biliyor musunuz? – user2397282

+0

Ayrıca, başka bir hafif sorun var. Kod çalışır, ancak ekrana nerede dokunduğun önemli değil. Bu biraz problem çünkü bunlardan 3 tane alacağım. Bunu değiştirebilmenin herhangi bir yolu var, bu yüzden sadece dokunduğunuzda belirli bir görünüm için çalışıyor mu? – user2397282

+0

Bir maksimum ve bir dakika yeterince kolaydır. Önemli olan tek nokta 'currentPoint.y' olduğuna dikkat edin. CurrentPoint.y'nin belirli aralıklarla ("MAX" ve "MIN" işlevlerini kullanarak) olduğundan emin olmak istediğiniz sonucu verecektir. Seçmek istediğiniz görünüm için 'currentPoint.x' dosyasına bakın ve nerede olduğunu bulun. Solda ise (ekran genişliğinin 1/3'ünden az), ilk görünümü kullanın. Eğer ortada ise, ikinci görünümü kullanın, vb. – msgambel

İlgili konular