больший UISlider хорошо, но отслеживающий зональную проблему

Моя цель состоит в том, чтобы создать больший UISlider с 35 пикселей высотой для изображения ползунка.

Я разделил UISlider на подклассы и добавил метод:

- (CGRect)trackRectForBounds:(CGRect)bounds
{
    return CGRectMake(bounds.origin.x, bounds.origin.y, self.bounds.size.width, 50);
}

Тогда я установил изображение Тума от своего контроллера с помощью setThumbImage:

Мой больший ползунок хорошо отображен.

Проблемой, которую я имею, который является зоной отслеживания, является все еще то же приблизительно 19 пкс высотой, как расширить его до 50?

Спасибо

T.

10
задан thierryb 16 September 2009 в 23:24
поделиться

2 ответа

Я считаю, что вы можете захотеть посмотреть на thumbRectForBounds:trackRect:value:

0
ответ дан 3 December 2019 в 13:24
поделиться

Давняя проблема с элементом управления UISlider в iPhone OS заключается в том, что вы не можете сделать его выше. В частности, вы можете сделать его более высоким, указав более высокие изображения для его большого пальца и дорожки, но сенсорная область останется крошечной высотой 23 пикселя.

Майкл Патрисиос опубликовал способ , позволяющий упростить касание ползунков по умолчанию, и вариант этого метода может работать с ползунками большего размера. Что вам нужно сделать, так это создать подкласс UISlider и переопределить pointInside в своем классе:

// How many extra touchable pixels you want above and below the 23px slider
#define SIZE_EXTENSION_Y 10

- (BOOL) pointInside:(CGPoint)point withEvent:(UIEvent*)event {
    CGRect bounds = self.bounds;
    bounds = CGRectInset(bounds, 0, SIZE_EXTENSION_Y);
    return CGRectContainsPoint(bounds, point);
}

В Interface Builder установите ползунок на использование вашего нового подкласса UISlider, и теперь у вас есть слайдер с регулируемой высотой 43 пикселей.

31
ответ дан 3 December 2019 в 13:24
поделиться
Другие вопросы по тегам:

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