unavailable cgrectgetwidth cgpointmake iphone objective-c uiimage

iphone - cgrectgetwidth - Centrar un CGRect en una vista



cgrectmake swift 4 (7)

Coloque el imageView en el parentView según el tamaño y el origen del rect del parentView.

Dada una vista principal llamada parentView:

float parentRect = parentView.frame; float imageRect = imageView.frame; imageRect.origin.x = (int)(parentView.origin.x + (parentRect.size.width - imageRect.size.width) / 2); imageRect.origin.y = (int)(parentView.origin.y + (parentRect.size.height- imageRect.size.height) / 2); imageView.frame = imageRect;

La conversión de los orígenes a int garantiza que su imagen centrada no esté borrosa (aunque puede estar descentrada por una cantidad de subpíxel).

Tengo una imagen que se muestra en un CGRect. ¿Cómo centrar el rect en la vista?

Aquí está mi código:

UIImage * image = [UIImage imageNamed:place.image]; CGRect rect = CGRectMake(10.0f, 90.0f, image.size.width, image.size.height); UIImageView * imageView = [[UIImageView alloc] initWithFrame:rect]; [imageView setImage:image];

He intentado imageView.center pero sin efecto.

gracias por adelantado.


El center de UIView es una propiedad, no un método.

Debe calcular la ubicación real en la que desea ubicarlo. Puede hacerlo configurando el marco de la vista o estableciendo su centro, que es más sencillo en su caso.

No dices qué vista luego imageView una imageView una vista imageView de. Si lo superview dentro de algo llamado superview , puedes hacer esto:

CGPoint superCenter = CGPointMake(CGRectGetMidX([superview bounds]), CGRectGetMidY([superview bounds])); [imageView setCenter:superCenter];



Para Swift 4:

CGPoint center = CGPoint(x: buttonRect.midX, y: buttonRect.midY)


Si se llama a la función con frecuencia, también puede usar macros como se muestra aquí para simplificar.

#define Center(x) CGPointMake(CGRectGetMidX(x), CGRectGetMidY(x));

Entonces utilízalo como

CGPoint myPoint = Center(myRect);


CGRect CGRectIntegralCenteredInRect(CGRect innerRect, CGRect outerRect){ CGFloat originX = floorf((outerRect.size.width - innerRect.size.width) * 0.5f); CGFloat originY = floorf((outerRect.size.height - innerRect.size.height) * 0.5f); return CGRectMake(originX, originY, innerRect.size.width, innerRect.size.height); }


CGRect r = thingToCenter.frame; r.origin = parentView.bounds.origin; r.origin.x = parentView.bounds.size.width / 2 - r.size.width / 2; r.origin.y = parentView.bounds.size.height / 2 - r.size.height / 2 + 12; thingToCenter.frame = r;