UIButton: Создание области хита, больше, чем область хита по умолчанию

Ниже if может true, когда ваш John Smith точно совпадает с Smith,John.

if (MyOptions.Any(x => MyKeywords.All(y => x.Split(',').Contains(y))))
{
    check = true;
}
185
задан EI Captain v2.0 25 December 2015 в 03:10
поделиться

5 ответов

Это - просто это простое:

class ChubbyButton: UIButton {
    override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
        return bounds.insetBy(dx: -20, dy: -20).contains(point)
    }
}

Это - все это.

1
ответ дан 23 November 2019 в 05:52
поделиться

Я рекомендую разместить UIB-кнопку с типом Custom по центру над вашей информационной кнопкой. Измените размер пользовательской кнопки до размера, который вы хотите, чтобы область попадания была. Оттуда у вас есть две опции:

  1. Отметьте опцию «Показать касание при подсветке» пользовательской кнопки. Белое свечение появится над информационной кнопкой, но в большинстве случаев пользовательский палец покроет это, и все, что они увидят, это свечение вокруг.

  2. Установите IBOutlet для информационной кнопки и два IBActions для пользовательской кнопки. один для «Touch Down» и один для «Touch Up Inside». Затем в XCode сделайте событие приземления, установите выделенное свойство информационной кнопки в YES, и событие touchupinside установите выделенное свойство в NO.

19
ответ дан 23 November 2019 в 05:52
поделиться

Ну, вы можете поместить свою UIB-кнопку в прозрачный и немного больший UIView, а затем перехватить события касания на экземпляре UIView, как в UIButton. Таким образом, у вас все еще будет кнопка, но с большей сенсорной областью. Вам придется вручную работать с выбранными и выделенными состояниями с помощью кнопки, если пользователь касается вида вместо кнопки.

Другая возможность заключается в использовании UIImage вместо UIButton.

5
ответ дан 23 November 2019 в 05:52
поделиться

Мне удалось программно увеличить область нажатия кнопки информации. Графика «i» не меняет масштаб и остается по центру в новом фрейме кнопки.

Размер информационной кнопки, кажется, установлен на 18x19 [*] в Интерфейсном Разработчике. Подключив его к IBOutlet, я смог без проблем изменить его размер кадра в коде.

static void _resizeButton( UIButton *button )
{
    const CGRect oldFrame = infoButton.frame;
    const CGFloat desiredWidth = 44.f;
    const CGFloat margin = 
        ( desiredWidth - CGRectGetWidth( oldFrame ) ) / 2.f;
    infoButton.frame = CGRectInset( oldFrame, -margin, -margin );
}

[*]: Более поздние версии iOS, похоже, увеличили область нажатия кнопки информации.

5
ответ дан 23 November 2019 в 05:52
поделиться

Это работает для меня:

UIButton *button = [UIButton buttonWithType: UIButtonTypeCustom];
// set the image (here with a size of 32 x 32)
[button setImage: [UIImage imageNamed: @"myimage.png"] forState: UIControlStateNormal];
// just set the frame of the button (here 64 x 64)
[button setFrame: CGRectMake(xPositionOfMyButton, yPositionOfMyButton, 64, 64)];
10
ответ дан 23 November 2019 в 05:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: