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を試しましたが、効果がありません。
前もって感謝します。
UIViewのcenter
はプロパティであり、メソッドではありません。
配置する実際の位置を計算する必要があります。これは、ビューのフレームを設定するか、ビューの中心を設定することで実行できます。これは、場合によっては簡単です。
imageView
をサブビューにするビューを指定しません。 superview
という名前の中に入れる場合は、次のようにすることができます。
CGPoint superCenter = CGPointMake(CGRectGetMidX([superview bounds]), CGRectGetMidY([superview bounds]));
[imageView setCenter:superCenter];
見つめている:
https://developer.Apple.com/documentation/coregraphics/cggeometry
できるよ:
CGPoint center = CGPointMake(CGRectGetMidX(mainRect), CGRectGetMidY(mainRect));
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にキャストすると、中央に配置された画像がぼやけないようになります(ただし、サブピクセル量だけ中央からずれている場合があります)。
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;
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));
}
Swift 4:
CGPoint center = CGPoint(x: buttonRect.midX, y: buttonRect.midY)
関数が頻繁に呼び出される場合は、簡単にするために、ここに示すようなマクロを使用することもできます。
#define Center(x) CGPointMake(CGRectGetMidX(x), CGRectGetMidY(x));
次に、次のように使用します
CGPoint myPoint = Center(myRect);
スウィフト4
let center = CGPoint(x: bounds.midX, y: bounds.midY)