2017-01-08 10 views
2

Я новичок в Swift и iOS. В Android мы можем легко растянуть изображение и поместить некоторое содержимое внутри этого изображения, но я не нахожу эквивалент для iOS.Эквивалентный Android 9-patch для iOS и Swift 3.0 (несколько растягиваемых областей)

Я нашел много учебников/сообщений с методом resizableImage (withCapInsets), но это не совсем то, что я хочу. Посмотрите на эту фотографию:

stretchable areas with resizableImage

Зоны 2, 4, 5, 6 и 8 будут растянуты и только их. С Android 9-патч, можно определить несколько растяжению области, как показано ниже:

multiple stretchable areas

Здесь только красные районы растяжению. Этот метод действительно полезен для сохранения зеленой зоны, но это невозможно с resizableImage (withCapInsets).

Кроме того, с 9-патчем для Android мы можем легко определить область содержимого, такую ​​как texview, imageview, ... в синей области, и изображение растягивается в соответствии с размером текста в этой области. Возможно ли это с iOS и Swift?

+0

Если это простое векторное изображение, подобное выше, чем вы можете использовать UIBezierPath для рисования фигуры. Это легко настраивается, чтобы растянуть ват, который вам нужен, и сделать более резкий результат – Emptyless

+0

или использовать два изображения. см. также http://stackoverflow.com/questions/20117787/custom-resizable-image-drawing-in-ios –

+0

К сожалению, это не векторное изображение, и я нашел решение 3 изображений, но это не очень приятно, и есть много работа ... в Android мы можем сделать это легко с помощью только одного изображения, я не могу себе представить, что подобного решения для iOS нет! спасибо за ваши предложения =) – Arthurius

ответ

3

Насколько я знаю resizableImage(withCapInsets:) - это ваш единственный встроенный вариант, и система не поддерживает ваш второй сценарий с двумя растяжимыми областями.

Как указано в the other thread Jon Rose linked to, должно быть возможно выполнить вашу цель, используя 2 изображения. Я бы предложил создать подкласс UIImageView, который предлагает эту функциональность и внутренне разбивает изображение на 2 pices и создает отдельный растягиваемый образ для обоих. Это не должно быть так сложно.

После небольшого поиска в google это похоже, что кто-то еще создал библиотеку изображений iOS 9-patch. Посмотрите эту ссылку: https://github.com/andyland/Tortuga22-NinePatch

К сожалению, ссылка readme на этом репо сломана, поэтому вам придется загрузить ее и погрозить, чтобы выяснить, как ее использовать. Что касается того, почему readme был помещен как ссылка, а не встроенный, я понятия не имею.

+0

Спасибо за ваш ответ! Я нашел эту библиотеку, но, как вы сказали, репозитория readme не работает, а библиотека закодирована в Objective-C (я не знаю этого языка) ... Я знаю, что можно использовать библиотеку obj-c в быстрой проект, но для его использования я должен понимать библиотеку. 2 изображения не должны быть сложными для реализации? Я не уверен ^^ Но если это единственное решение, возможно, я попробую! Я схожу с ума !!! лол – Arthurius