Я не знаю, как можно погладить внутреннюю часть пути.Тем не менее, вы можете сделать что-то подобное, что может работать для вас.Если вы уменьшите путь и переместите его в центр с нужным количеством, он будет хорошо вписываться в нужные вам рамки.Визуальная разница между рисованием внутри и масштабированием отсутствует для простых форм, таких как прямоугольники, закругленные контуры и эллипсы, но будет отличаться для более сложных форм.Подумайте, что произойдет, если вы обведете букву B
«внутренними штрихами» вместо масштабирования.
Вот как это выглядит до и после преобразования с использованием очень широкой линии.Как вы можете видеть, поглаживание линии отцентрирует ее на пути, и половина будет появляться с каждой стороны.Таким образом, чтобы преобразовать его, нам нужно переместить путь на половину ширины линии вниз и вправо, а затем уменьшить его на ширину линии.
Используя bezierPathWithRoundedRect
ширина линии 20,размер блока 200 x 300, радиус угла 50
![paths](https://i.stack.imgur.com/UuSM9.jpg)
Преобразование становится таким:
viewSize
Ваша ограничительная рамка для пути
lineWidth
- это ширина линии
bezierPath
- это ваша UIBezierPath
CGAffineTransform transform = CGAffineTransformMakeTranslation(lineWidth / 2.0,
lineWidth / 2.0);
transform = CGAffineTransformScale(transform,
(viewSize.width - lineWidth) / viewSize.width,
(viewSize.height - lineWidth) / viewSize.height);
CGPathRef reducedPath = CGPathCreateCopyByTransformingPath(bezierPath.CGPath, &transform);
ОБНОВЛЕНИЕ
Если выЧтобы сохранить соотношение сторон, масштаб можно изменить, чтобы он был одинаковым для обеих осей, используя наименьший коэффициент для обеих.
CGFloat scale = viewSize.width < viewSize.height ? (viewSize.width - lineWidth) / viewSize.width :
(viewSize.height - lineWidth) / viewSize.height;
CGAffineTransform transform = CGAffineTransformMakeTranslation(lineWidth / 2.0, lineWidth / 2.0);
transform = CGAffineTransformScale(transform, scale, scale);
CGPathRef reducedPath = CGPathCreateCopyByTransformingPath(bezierPath.CGPath, &transform);