CGRect のサイズを特定のパーセント値で増やすにはどうすればよいですか? 質問する

CGRect のサイズを特定のパーセント値で増やすにはどうすればよいですか? 質問する

CGRect のサイズを特定のパーセント値で増やすにはどうすればよいですか?CGRectInsetそれを実行するには、何らかの形式の を使用する必要がありますか?

例:

CGRect があると仮定します:{10, 10, 110, 110}

サイズを(中心点はそのままに)20% 増やしたいのですが、

{0, 0, 120, 120}

ベストアンサー1

CGRectInset必要に応じて使用できます:

double pct = 0.2;
CGRect newRect = CGRectInset(oldRect, -CGRectGetWidth(oldRect)*pct/2, -CGRectGetHeight(oldRect)*pct/2);

サイズを小さくするには、-s を削除します。

サイドノート: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);

おすすめ記事