I have a question about scale operation of a frame to a specific size.
I have a CGRect and would to resize it to a specific CGSize.
I would to move the center of this CGRect in proportion to my rescale value.
I have a question about scale operation of a frame to a specific size.
I have a CGRect and would to resize it to a specific CGSize.
I would to move the center of this CGRect in proportion to my rescale value.
たまたま a を変更している場合は、次のUIView
アプローチを取ることができます。
CGPoint previousCenter = view.center;
// Set width and height here:
view.frame = CGRectMake(view.frame.origin.x,view.frame.origin.y, width, height);
view.center = previousCenter;
これにより、ビューのサイズを変更しながら中心点が維持されます。
私はあなたの質問に少し混乱しているので、正しく答えられないかもしれません。CGAffineTransform
タグが示すように、スケールするためにを使用している場合、それはまったく別の問題です。
使用できますCGRectInset(rect, x, y)
。これにより、 CGRect がx
およびによって挿入さy
れ、原点が およびx
によって押し込まれy
ます。( https://developer.apple.com/library/ios/documentation/graphicsimaging/reference/CGGeometry/Reference/reference.html#//apple_ref/c/func/CGRectInset )
CGSize targetSize = CGSizeMake(100.0f, 100.0f);
CGRect rect = CGRectMake(50.0f, 50.0f, 200.0f, 200.0f);
rect = CGRectInset(rect, roundf((rect.size.width - targetSize.width) / 2.0f), roundf((rect.size.height - targetSize.height) / 2.0f);
編集:2つのサイズの違いを半分にして使用していることに注意してください。ここでの私の正当化は、それCGRectInset
が四角形全体に影響を与えるということです。私が意味することは...
CGRect rect = CGRectMake(0, 0, 10, 10);
rect = CGRectInset(rect, 2, 2);
rect is now a CGRect with (2, 2, 6, 6)