Подтвердить что ты не робот

Изображение центра UIButton с вставкой

Я хотел бы создать UIButton, но с большей площадью крана, чем изображение. (Пример: кнопка 40x40, но изображение только 20x20, центрировано).

Это то, что imageEdgeInsets для?

Я установил его как программно: (Это в UIView, который содержит мою кнопку)

- (void)awakeFromNib {
    [_plusButton setImageEdgeInsets:UIEdgeInsetsMake(10, 10, 10, 10)];
    [_plusButton setContentMode:UIViewContentModeCenter];
}

И из раскадровки

enter image description here

Но ни один из них не работает.

4b9b3361

Ответ 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)