2011-06-12 16 views
9

Basit bir UIView sürgülü veya sürgülü ile ilgili bazı örnek kodları çevrimiçi gördüm. Ekrandan (negatif) koordinatları ile UIView başlangıcına sahip olmak mantıklıdır ve daha sonra animasyon parametresi UIView çerçevesini değiştirir. İlk soru şu: Bu en belirgin yöntemi sağlıyor mu? Ancak, kodumda çerçeve kökü atanamaz. O kadar çok şey söyleyen satır için Xcode hatası alıyorum.Animasyon UIView frame.origin

Sadece bir animasyon içine böyle bir şey yapmak istiyorum:

self.viewPop.frame.origin.y = 100;

Herhangi bir yardım için teşekkür ederiz.

GÜNCELLEME: Bu sorunu çözdüm.

CGRect frame=self.moveView.frame; 
frame.origin.x=newvalue. 


[UIView animateWithDuration:2.0 animations:^{ 

    self.moveView.frame=frame; 

}]; 
+1

Çözümünüzü bir yanıt haline getirin, ardından doğru olanı işaretleyin. –

cevap

11

GÜNCELLEME: Ben keşfedilen tekniği başka CGRect için görünümünüzün çerçevesini atayabilir ve bu CGRect değişiklik yapmak, ardından tekrar çerçeveye atamak için bu sorunu çözdük. Ben keşfedilen tekniği başka CGRect için görünümünüzün çerçevesini atayabilir ve bu CGRect değişiklik yapmak, ardından tekrar çerçeveye atamak için:

CGRect frame=self.moveView.frame; 
frame.origin.x=newvalue. 


[UIView animateWithDuration:2.0 animations:^{ 

self.moveView.frame=frame; 

}]; 
1

FWIW, bu bu tür etrafında bir UIView kategorisini olması güzel thing:

@interface UIView (JCUtilities) 

@property (nonatomic, assign) CGFloat frameX; 

-(CGFloat)frameX; 
-(void)setFrameX:(CGFloat)newX; 

@end 

@implementation UIView (JCUtilities) 

- (CGFloat)frameX { 
    return self.frame.origin.x; 
} 

- (void)setFrameX:(CGFloat)newX { 
    self.frame = CGRectMake(newX, self.frame.origin.y, 
          self.frame.size.width, self.frame.size.height); 
}