Как я могу отрегулировать размер изображения UIButton? Я устанавливаю изображение так:
[myLikesButton setImage:[UIImage imageNamed:@"icon-heart.png"] forState:UIControlStateNormal];
Однако это заполняет изображение до полной кнопки, как я могу уменьшить изображение?
ios
objective-c
xcode
uibutton
штольня
источник
источник
Ответы:
Если я правильно понимаю, что вы пытаетесь сделать, вам нужно поиграть со вставкой края изображения кнопок. Что-то вроде:
источник
Ответ Тима правильный, однако я хотел добавить еще одно предложение, потому что в моем случае было более простое решение.
Я хотел установить
UIButton
вставки изображений, потому что я не понимал, что могу установить режим содержимого для кнопокUIImageView
, что исключило бы необходимость использования UIEdgeInsets и жестко закодированных значений в целом. Просто получите доступ к основному представлению изображения на кнопке и установите режим содержимого:Видите, UIButton не слушает настройки режима контента?
Свифт 3
источник
button.backgroundImageView.contentMode
не работаетСвифт 3:
источник
contentVerticalAlignment/contentHorizontalAlignment
опции позволили мне масштабировать его так, как я надеялся. Спасибо за публикацию.contentHorizontalAlignment
иcontentVerticalAlignment
сделал трюкВы также можете сделать это из Inteface Builder, как это.
Я думаю, что это полезно.
источник
Если ваше изображение слишком велико (и вы не можете / не хотите просто уменьшить его), комбинация первых двух ответов работает отлично.
Если вы правильно не вставите изображение, изображение будет перекошено без изменения
contentMode
.источник
Вы можете использовать
imageEdgeInsets
свойство Inset или outset margin для прямоугольника вокруг изображения кнопки.Положительное значение сокращает, или вставляет, этот край - движущийся. Отрицательное значение расширяет или опускает этот край.
источник
Вот другое решение для масштабирования imageView UIButton.
источник
Вот версия Swift:
источник
Swift 4
Вам нужно будет использовать эти две строки кода в указанном порядке. Все, что вам нужно, это изменить верхнее и нижнее значение краевых вставок.
источник
EXC_BAD_ACCESS
ошибку при вызове изoverride func layoutSubviews()
.С помощью ответа Тима С. я смог создать расширение с
UIButton
использованием Swift, которое позволяет вам указывать рамку изображения с помощью.setImage()
функции с дополнительнымframe
параметром.Используя это, если вы хотите установить кадр
UIButton
дляCGRectMake(0, 0, 64, 64)
, и установить образ нейmyImage
с кадромCGRectMake(8, 8, 48, 48)
, вы можете использоватьисточник
if let
вместо того, чтобы проверить, еслиframe
есть,nil
а затем принудительно развернуть его миллион раз .При изменении размера значков с помощью
UIEdgeInsetsMake(top, left, bottom, right)
учитывайте размеры кнопок и способность UIEdgeInsetsMake работать с отрицательными значениями, как если бы они были положительными.Пример: две кнопки высотой 100 и аспектом 1: 1.
Примеры 1 и 3 идентичны, так как ABS (100 - (40 + 40)) = ABS (100 - (60 + 60))
источник
Свифт 3
Я установил ширину и высоту myButton на 40, и мой отступ от EdgeInsetsMake равен 15 со всех сторон. Я предлагаю добавить цвет фона для вашей кнопки, чтобы увидеть фактическое заполнение.
источник
Один из подходов заключается в изменении размера UIImage в коде, как показано ниже. Примечание: этот код масштабируется только по высоте, но вы также можете легко настроить функцию по ширине.
источник
Обновлено для Swift> 5
установить размер:
установить поля:
источник
Обновлено для Swift 3
источник
я думаю, ваш размер изображения также соответствует размеру кнопки, тогда вы помещаете изображение в фон кнопки, например:
Вы должны иметь одинаковый размер изображения и кнопки. Надеюсь, вы понимаете мою точку зрения.
источник