2012-02-28 13 views
8

Aquí está mi imagen:cómo alinear mi imagen en el centro del IOS horizontal

Obj *obj = ... obj has imageHref which is NSString 

UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:obj.imageHref]]; 
[image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)]; 

dependiendo del tamaño de la imagen que no puedo encontrar la manera de centrarlo, alguna idea?

Esto es todo método en el interior:

- (void)drawRect:(CGRect)rect {  
    Obj *obj = ... obj has imageHref which is NSString 

    UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:obj.imageHref]]; 
    [image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)]; 

    NSLog(@"%f", rect.size.width); 
    NSLog(@"%f", rect.size.height); 
} 

Dónde rect.size.width impresiones 320.000000 y rect.size.height impresiones 416.000000

Respuesta

32
[image drawInRect:CGRectMake((self.view.frame.size.width/2) - (image.size.width/2), 
          (self.view.frame.size.height/2) - (image.size.height/2), 
          image.size.width, 
          image.size.height)]; 

edición:

Como ya se encuentra en un UIView:

[image drawInRect:CGRectMake((self.frame.size.width/2) - (image.size.width/2), (self.frame.size.height/2) - (image.size.height/2), image.size.width, image.size.height)]; 
+0

Hmm ... No hay ninguna garantía de que una división de una anchura o una altura de 2 estancias como un entero. Yo agregaría 'piso'. –

23

Esto o algo así debe centrarse horizontalmente.

CGPoint centerImageView = imageView.center; 
centerImageView.x = self.view.center.x; 
ImageView.center = centerImageView; 
+0

Gracias su funcionamiento excelente ... – Mani

+0

propiedad de un centro no encontrado para el tipo UIImage – London

+0

pero tiene en UIImageView. He actualizado mi respuesta para que sea obvio. – Damo

1

Es posible añadir una macro como esto antes @interface en .h archivo de clase
#define COUNTMID(X,Y) (float) (X-Y)/2
y luego usarlo en código como
float center COUNTMID(ParentView.frame.width,ChildView.frame.width)
depositar su vista ChildView al centro horizontal de ParentView
También hice un método, haciendo que un marco de ChildView se coloque en el centro de ParentView:

-(CGRect) CenterFrameOfView:(UIView *) ParentView forView:(UIView *) ChildView 
{ 
    CGRect result = CGRectMake(COUNTMID(ParentView.frame.size.width,ChildView.frame.size.width),COUNTMID(ParentView.frame.size.height,ChildView.frame.height),ChildView.frame.size.width,ChildView.frame.size.height); 
    return result; 
} 

O con setFrame

-(void) CenterFrameOfView:(UIView *) ParentView forView:(UIView *) ChildView 
{ 
    CGRect result = CGRectMake(COUNTMID(ParentView.frame.size.width,ChildView.frame.size.width),COUNTMID(ParentView.frame.size.height,ChildView.frame.height),ChildView.frame.size.width,ChildView.frame.size.height); 
    [ChildView setFrame:result]; 
} 

creo que sirve

Cuestiones relacionadas