如何将CGRect的大小增加一定百分比值?我应该使用某种形式的CGRectInset
来做到这一点吗?
例子:
假设我有一个CGRect:{10, 10, 110, 110}
我想将其大小(保持相同的中心点)增加20%,以:{0, 0, 120, 120}
最佳答案
如果愿意,可以使用CGRectInset
:
double pct = 0.2;
CGRect newRect = CGRectInset(oldRect, -CGRectGetWidth(oldRect)*pct/2, -CGRectGetHeight(oldRect)*pct/2);
要减小大小,请除去
-
。旁注:比
CGRect
大20%的{10, 10, 100, 100}
是{0, 0, 120, 120}
。编辑:如果意图是按面积增加,则可以这样做(即使对于不是正方形的矩形也是如此):
CGFloat width = CGRectGetWidth(oldRect);
CGFloat height = CGRectGetHeight(oldRect);
double pct = 1.2; // 20% increase
double newWidth = sqrt(width * width * pct);
double newHeight = sqrt(height * height * pct);
CGRect newRect = CGRectInset(oldRect, (width-newWidth)/2, (height-newHeight)/2);