5

Sayfanın dörtte biri kadar bir UIView kaydırmaya çalışıyorum, bunun altında başka bir görünüm ortaya çıkarmak (seçenekleri görüntülemek) ve sonra bu seçenekleri kapsayacak şekilde aşağı kaydırın. Acımasızca aradım ama aradığım şeyi bulamıyorum. Ekrandaki en iyi görünümü korumak istediğim için bir modalview kullanmak istemiyorum. Aşağıdaki kodda, çalışmam var, en üst düzey kayıyor, ancak sonra tamamen kayboluyor (kayboluyor).kCATransitionPush kullanarak UIView'i yukarı kaydırın

Herhangi bir yardım büyük beğeni topluyor!

Teşekkürler.

HomeOptionsViewController *homeOptionsViewController = [[HomeOptionsViewController alloc] 
         initWithNibName:@"HomeOptionsViewController" 
         bundle:nil]; 
// get the view that's currently showing 
UIView *currentView = self.view; 
// get the the underlying UIWindow, or the view containing the current view 
UIView *theWindow = [currentView superview]; 

UIView *newView = homeOptionsViewController.view; 
//newView.frame = CGRectMake(0,300, 320,140); 
    newView.frame = CGRectMake(0,-10, 320,140); 
// remove the current view and replace with myView1 
//---[currentView removeFromSuperview]; 
[theWindow addSubview:newView]; 

theWindow.frame = CGRectMake(0,-110,320,200); 

newView.frame = theWindow.bounds; 
// set up an animation for the transition between the views 

CATransition *animation = [CATransition animation]; 
[animation setDuration:0.5]; 
[animation setType:kCATransitionPush]; 
[animation setSubtype:kCATransitionFromTop]; 
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; 
//[theWindow setFrame:CGRectMake(0,200,320,300)]; 
[[theWindow layer] addAnimation:animation forKey:@"SwitchToView1"]; 

cevap

3

standart UIView animasyonlar kullanmadığınız bir nedeni? CATransitions, görüşü tamamen değiştirecek çünkü bir görüşten diğerine geçiş olması gerekiyordu.

Böyle bir şey denediniz mi? Ekranın altından kaydırmak istediğiniz görünümü ekleyin ve ardından her iki kareyi de değiştirerek canlandırın. Kayma etkisi yaratır.

newView.frame = CGRectMake(0,416,320,140); 
[theWindow addSubview:newView]; 
[UIView beginAnimations:@"SwitchToView1" context:nil]; 
[UIView setAnimationDuration:0.5]; 
theWindow.frame = CGRectOffset(theWindow.frame, 0, -140); 
newView.frame = CGRectOffset(newView.frame, 0, -140); 
[UIView commitAnimations]; 
+0

Teşekkürler Mishie. Daha iyi bilmediğimi söylemekten başka CATransitions kullanmamın özel bir sebebi yok. Standart UIViews kullanmak için kodunuzu denedim ama yine de istenen etkiyi sağlamaz. Pencere görünümü yukarı kayıyor, ancak newView ekranın üst kısmında, Pencere görünümü üzerinde beliriyor ve ardından aşağı doğru kayıyor. Pencerenin yukarı kaydırılmasını ve alt kısmın altında görüntülenecek newView görünümünü beğenirim. Standart UIView'i kullanarak animasyonu nasıl kontrol edebilirim? Teşekkürler! – Doug

+0

Çerçeve koordinatlarını doğru şekilde ayarlamanız yeterlidir. NewView'inizin başlangıç ​​karesinin ne olduğundan emin değilim bu yüzden sadece bir çeşit tahmin ettim =) – MishieMoo

+0

Tekrar teşekkürler Mishie. Bu çalışacak. – Doug

İlgili konular