Вы можете использовать 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);
person
Ian MacDonald
schedule
13.11.2014
insetBy
- person Fattie   schedule 12.02.2017