2016-08-01 1 views
9

Я делаю пользовательскую клавиатуру, и мне нужно центрировать изображение значка сдвига внутри кнопки переключения. Изображение 100px x 100px.Как центрировать изображение внутри UIButton без растяжения в обоих направлениях в Swift?

Однако рамка кнопки на портрете 36pt x 38pt, а в ландшафте - 68pt x 32pt. Я попытался использовать свойство вставки образа кнопки, чтобы центрировать изображение. Однако это не так.

Я попробовал себя и установил вставки изображений в (25,25,25,25), центры изображений обоих размеров. Однако значок становится слишком маленьким, чтобы видеть.

shiftButton.setImage(UIImage(named: "shift"), forState: .Normal) 

shiftButton.imageEdgeInsets = UIEdgeInsetsMake(0,0,0,0) 

Я делаю кнопку программно. И мне нужна кнопка для масштабирования, сохраняющая ее соотношение сторон, то есть 1:1. Его максимальная ширина или высота всегда привязаны к самой высоте кнопки. Ширина/высота изображения должна быть максимальной высоты кнопки. И он не должен растягиваться, чтобы исказить значок. Однако сама кнопка может растягиваться.

Мне нужно изображение для масштабирования в соответствии с рамкой кнопки, но сохраняйте его соотношение сторон. И он может масштабироваться или масштабироваться, но всегда должен поддерживать соотношение сторон 1: 1.

Любые предложения по решению этой проблемы?

ответ

9

Наконец решение пришло через. Вы должны установить режим содержимого для изображения внутри UIButton.

Решение обновить contentMode в Image, когда вы используете изображение переднего плана внутри кнопки наряду с contentMode в UIButton.

shiftButton.contentMode = .Center 
shiftButton.imageView?.contentMode = .ScaleAspectFit 
+0

.center и .scaleAspectFit для последней быстрой (теперь использующей lowerCameCase) –

3

Установите режим содержания кнопки на Center:

shiftButton.contentMode = .Center 
+0

Я уже пробовал. В данном конкретном случае это не работает. Возможно, это потому, что изображение больше размера кадра. – Ariel

+0

Когда ширина кнопки начинает растягиваться, изображение, похоже, растягивается. И это поведение нежелательно вообще. – Ariel

+0

Вы пробовали '.ScaleAspectFit'? –

0

Я был в состоянии центр изображения путем установки врезки контента 0 с помощью инспектора по размерам на раскадровке:

enter image description here

0
  • Добавить User Defined выполнения Атрибуты для вашей кнопки.

В скриншоте ниже значения 1 равна scaleAspectFit

imageView.ContentMode = scaleAspectFit 

enter image description here enter image description here

Смежные вопросы