将CGRect置于视图中

时间:2010-09-09 15:53:13

标签: iphone objective-c uiimage

我在CGRect中显示图像。如何在视图中居中?

这是我的代码:

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];

我已经尝试了 imageView.center ,但没效果。

提前感谢。

8 个答案:

答案 0 :(得分:53)

看着:

https://developer.apple.com/documentation/coregraphics/cggeometry

你可以这样做:

CGPoint center = CGPointMake(CGRectGetMidX(mainRect), CGRectGetMidY(mainRect));

答案 1 :(得分:25)

UIView的center是属性,而不是方法。

您需要计算要放入的实际位置。您可以通过设置视图的框架或设置其中心来完成此操作,这在您的情况下更简单。

你没有说出你的观点是imageView的子视图。如果你把它放在名为superview的内容中,你可以这样做:

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

答案 2 :(得分:6)

根据parentView的rect的大小和原点将imageView放在parentView中。

给定名为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;

将原点投射到int可确保您的居中图像不会模糊(尽管它可能偏离子像素数量的中心)。

答案 3 :(得分:4)

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;

答案 4 :(得分:3)

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

答案 5 :(得分:0)

如果频繁调用该函数,为简单起见,您也可以使用此处所示的宏。

CGPoint myPoint = Center(myRect);

然后像

一样使用它
pmap -x pid | grep total

答案 6 :(得分:0)

对于Swift 4:

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

答案 7 :(得分:0)

雨燕4

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