iOS 9 UISegmentedControl с растянутым векторным изображением

В моем приложении есть несколько кнопок на панели навигации. Это все UISegmentedControls с одним сегментом, завернутые в UIBarButtonItems. У некоторых из них есть изображения, которые я добавляю через каталог активов моего проекта, и все они имеют ширину 50.

Я использую Photoshop для создания изображений кнопок и сохраняю их в формате PDF, чтобы использовать их как векторные изображения в Xcode. Сами иконки 30х20.

Проблема в том, что изображение выглядит немного нечетким. Есть несколько небольших прямоугольников с границами в 1 пиксель, и они выглядят растянутыми по вертикали. Я пробовал, как мне кажется, любую комбинацию ширины (от 30 до 50) и высоты (от 20 до 44), включая квадрат (30x30, 36x36 и т. д.) и 2:1 (50x25, 48x24, 40x20 и т. д.) и всевозможные странные измерения, и ничто не кажется правильным. Я также попытался удвоить размеры, но изображение стало намного сильнее сжиматься по вертикали.

Мой вопрос: каково точное разрешение моего файла .psd, чтобы вектор не выглядел растянутым каким-либо образом? Это выглядит одинаково плохо в моем каталоге активов, на iPad Pro и на iPhone 6.


person Clayton Combe    schedule 17.12.2015    source источник


Ответы (1)


Вы можете использовать следующий код, чтобы установить поле вокруг вашего изображения, когда вы устанавливаете изображение:

yourSegmentedControl.setImage(yourImage.resizableImage(withCapInsets: .init(top: 0, left: 10, bottom: 0, right: 10), resizingMode: .stretch), forSegmentAt: 0)

Вы можете изменить значения «сверху», «слева», «снизу» и «справа» по своему усмотрению. Таким образом, вы можете настроить каждый раздел изображения по своему усмотрению. Это сработало для меня, я надеюсь, что это поможет!

person AW5    schedule 20.12.2016