ios - 如何将 CGRect 的大小增加一定的百分比值?

标签 ios objective-c swift cgrect

如何将 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{10, 10, 100, 100} 大 20% 是 {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);

关于ios - 如何将 CGRect 的大小增加一定的百分比值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26918886/

相关文章:

swift - 在第二个 View 上显示标签值 - Swift

swift - 检查对象是否是列表的一部分

iphone - 如何解决 -[__NSCFString JSONValue] : unrecognized selector sent to instance when application terminates?

ios - CoreData 排序实体 - 性能

objective-c - 收到推送通知时如何调用函数?

ios - map 注释不会在 iOS 7 中显示

iphone - 不显示多个动态大小的标签

iphone - NSURLConnection 委托(delegate)方法没有被调用

ios - 如何从 iOS 中的一组 url 预加载图像?

swift - 将进程标准输出重定向到 Swift 中的 Apple 系统日志工具