Изображение центра UIButton с вставкой
Я хотел бы создать UIButton, но с большей площадью крана, чем изображение. (Пример: кнопка 40x40, но изображение только 20x20, центрировано).
Это то, что imageEdgeInsets
для?
Я установил его как программно: (Это в UIView, который содержит мою кнопку)
- (void)awakeFromNib {
[_plusButton setImageEdgeInsets:UIEdgeInsetsMake(10, 10, 10, 10)];
[_plusButton setContentMode:UIViewContentModeCenter];
}
И из раскадровки
![enter image description here]()
Но ни один из них не работает.
Ответы
Ответ 1
Полагаю, что вы установили свое изображение в качестве фонового изображения кнопки, задали его как изображение, тогда оно никогда не будет растягиваться (остается в нем оригинальная форма), а imageEdgeInsets
будет работать на нем должным образом.
Как
![enter image description here]()
Ответ 2
Вот простой пример использования imageEdgeInsets
Это сделало бы кнопку 20x20 с малой площадью на 10 пикселей больше (40x40)
var expandHittableAreaAmt: CGFloat = 10
var buttonWidth: CGFloat = 20
var button = UIButton.buttonWithType(UIButtonType.Custom) as UIButton
button.frame = CGRectMake(0, 0,
buttonWidth + expandHittableAreaAmt*2,
buttonWidth + expandHittableAreaAmt*2)
button.imageEdgeInsets = UIEdgeInsetsMake(expandHittableAreaAmt,
expandHittableAreaAmt, expandHittableAreaAmt, expandHittableAreaAmt)
button.setImage(UIImage(named: "buttonImage"), forState: .Normal) //20x20 image
button.addTarget(self, action: "didTouchButton:", forControlEvents: .TouchUpInside)