2011-06-12 22 views
9

He visto un ejemplo de código en línea con respecto a un simple UIView deslizable o deslizable. Tiene sentido tener un inicio de UIView con sus coordenadas fuera de la pantalla (negativo) y luego el parámetro de animación simplemente cambia el marco de UIView. Entonces, la primera pregunta es: ¿esto proporciona el método más obvio?Animar UIView frame.origin

Sin embargo, en mi código, el origen del fotograma no es asignable. Obtengo el error de Xcode para esa línea que dice tanto.

que simplemente quieren hacer algo como esto dentro de una animación:

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

Cualquier ayuda es apreciada.

ACTUALIZACIÓN: He resuelto este problema. La técnica que descubrí es asignar el marco de su vista a otra CGRect, y realizar cambios en CGRect que, a continuación, asignar de nuevo a la trama:

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


[UIView animateWithDuration:2.0 animations:^{ 

    self.moveView.frame=frame; 

}]; 
+1

Mueva su solución a una respuesta, luego márquela como la correcta. –

Respuesta

11

ACTUALIZACIÓN: He resuelto este problema. La técnica que descubrí es asignar el marco de su vista a otra CGRect, y realizar cambios que CGRect, a continuación, asignar de nuevo a la trama:

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


[UIView animateWithDuration:2.0 animations:^{ 

self.moveView.frame=frame; 

}]; 
1

Fwiw, es bueno tener una categoría UIView en torno a este tipo de cosa:

@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); 
}