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];
Mirando a:
https://developer.apple.com/documentation/coregraphics/cggeometry
Tu puedes hacer:
CGPoint center = CGPointMake(CGRectGetMidX(mainRect), CGRectGetMidY(mainRect));
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;