Как работает UIEdgeInsetsMake?

Я создаю приложение, где я использую UIEdgeInsetsMake для UIEdgeInsetsMake , но я не понимаю, как это работает точно, UIEdgeInsetsMake имеет 4 аргумента:

  • верхний
  • Оставил
  • Дно
  • Правильно

Но они плавают, поэтому я не знаю, как установить это на изображение, спасибо! : D

Согласно документации:

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

Во время масштабирования или изменения размера изображения области, покрытые колпачком, не масштабируются и не изменяются. Вместо этого пиксельная область, не покрытая колпачком в каждом направлении, черепична, слева направо и сверху вниз, чтобы изменить размер изображения. Этот метод часто используется для создания кнопок с переменной шириной, которые сохраняют одинаковые закругленные углы, но центральная область которых растет или сжимается по мере необходимости. Для достижения максимальной производительности используйте плиточную область размером 1×1 пиксель.

Поэтому вам нужно использовать только количество пикселей, которые вы хотите сделать нерасторжимыми в значениях функции UIEdgeInsetsMake .

Скажем, у вас есть изображение 21×50 точек (21×50 пикселей в стандартной четкости, 42×100 пикселей в определении Retina «@ 2x») и хотите, чтобы это изображение было горизонтально растягиваемым, сохраняя 10 точек слева и справа, нетронутым, когда растягивание изображения , но только растягивать 1-точечную полосу в середине. Затем вы будете использовать UIEdgeInsetsMake(0,10,0,10) .

Не беспокойтесь, что они являются float (это полезно для изменения размера подпикселей, например, но на практике вы, вероятно, будете использовать только целые числа (или плавающие без десятичных частей)

Будьте осторожны, это метод iOS5 +, недоступный до iOS5. Если вы используете pre-iOS5 SDK, используйте stretchableImageWithLeftCapWidth:topCapHeight: вместо этого.


[EDIT] Некоторые советы, которые я использую с некоторого времени, поскольку я никогда не помню, в каком порядке поля структуры UIEdgeInsets – и в каком порядке мы должны передавать аргументы функции UIEdgeInsetsMake – я предпочитаю использовать синтаксис «назначенных inits» как это:

 UIEdgeInsets insets = { .left = 50, .right = 50, .top = 10, .bottom = 10 }; 

Или когда требуется явное приведение:

 UIImage* rzImg = [image resizableImageWithCapInsets:(UIEdgeInsets){ .left = 50, .right = 50, .top = 10, .bottom = 10 }]; 

Я считаю это более читаемым, особенно, чтобы быть уверенным, что мы не смешиваем разные границы / направления!

Но они плавают, поэтому я не знаю, как установить это на изображение

Это метод экземпляра UIImage. Таким образом, способ, которым вы используете resizableImageWithCapInsets для создания в изображении, – это начать с отправки этого сообщения на изображение (UIImage).

Прохладная новая функция: обратите внимание, что если вставки кромок все равны нулю, изображение будет выложено плиткой. Это работает как фон для всего, что принимает фоновое изображение. Он работает даже в UIImageView.

Я просто просматриваю эту статью, которая очистила всю мою концепцию UIEdgeInsetsMake

iOS: как сделать растягиваемую кнопку с помощью UIEdgeInsetsMake

Interesting Posts
Давайте будем гением компьютера.