2015-06-25 4 views
16

Я использую UIButton с автоматической раскладкой. Когда изображения малы, область крана также мала. Я мог бы представить несколько подходов, чтобы исправить это:Как увеличить область действия для UIButton?

  1. увеличить размер изображения, т. Е. Разместить прозрачную область вокруг изображения Это не хорошо, потому что, когда вы размещаете изображение, вам нужно сохранить дополнительную прозрачную рамку.
  2. использовать CGRectInset и увеличить размер. Это не очень хорошо работает с макетом авто, так как при использовании автоматического макета он возвращается к исходному размеру изображения.

Помимо двух подходов выше есть ли лучшее решение для увеличения области отвода UIButton?

ответ

14

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

button.contentEdgeInsets = UIEdgeInsets (вверху: 12, осталось: 16, дно: 12, справа: 16)

// или если вы специально хотите настроить вокруг изображения, вместо того, чтобы использовать button.imageEdgeInsets

В интерфейсе строителя, это будет выглядеть следующим образом:

interface builder

+0

следует ли давать отрицательное значение или объяснять, пожалуйста, – Shiva

-1

Я не уверен, но должен быть способ указать минимальный размер для любого UIView, который может решить вашу проблему за счет дополнительной работы. Но, честно говоря, добавление дополнительного прозрачного фона вокруг изображения - лучшее решение.

4

Вы можете установить кнопку EdgeInsets в раскадровке или через код. Размер кнопки должен быть больше по высоте и ширине, чем изображение, установленное на кнопку. UIEdgeInseton UIButton

Или вы также можете использовать представление изображения с помощью жестов tap на нем для действия при записи на изображение. Обязательно установите флажок «Взаимодействие с пользователем» для просмотра изображений на раскадровке, чтобы он мог работать. Сделайте изображение более крупным, чем изображение, чтобы установить его и установить на нем изображение. Теперь установите режим изображения с изображением в центр на построителе раскадровки/интерфейса.

Using image view with tap action and image set on it as center mode Вы можете нажать на изображении, чтобы сделать действие.

Надеюсь, это будет полезно.

2

Очень легко. Создайте пользовательский класс UIButton. Затем переопределите метод pointInside ... и измените значение по своему усмотрению.

#import "CustomButton.h" 

@implementation CustomButton 

-(BOOL) pointInside:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    CGRect newArea = CGRectMake(self.bounds.origin.x - 10, self.bounds.origin.y - 10, self.bounds.size.width + 20, self.bounds.size.height + 20); 

    return CGRectContainsPoint(newArea, point); 
} 
@end 

Для каждой стороны потребуется более 10 точек зоны касания.

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