문제

내 목표는 엄지손가락 이미지에 대해 높이가 35픽셀인 더 큰 UISlider를 만드는 것입니다.

UISlider를 하위 클래스로 분류하고 메소드를 추가했습니다.

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

그런 다음 setThumbImage를 사용하여 컨트롤러에서 thum 이미지를 설정합니다.

나의 더 큰 엄지손가락이 잘 표시됩니다.

내가 가진 문제는 추적 영역이 여전히 약 19px 높이와 동일하다는 것입니다. 이를 50으로 확장하는 방법은 무엇입니까?

감사해요

티.

도움이 되었습니까?

해결책

나는 당신이보고 싶을 수도 있다고 생각합니다 thumbRectForBounds:trackRect:value:

다른 팁

iPhone OS UISlider 컨트롤의 오랜 문제는 키를 더 크게 만들 수 없다는 것입니다.보다 구체적으로, 썸과 트랙에 더 큰 이미지를 지정하여 더 크게 보이도록 만들 수 있지만 터치 영역의 높이는 23px로 유지됩니다.

Michael Patricios는 다음과 같은 방법을 발표했습니다. 기본 슬라이더를 훨씬 더 쉽게 터치할 수 있도록 하고 해당 기술을 변형하면 더 큰 슬라이더를 처리할 수 있습니다.당신이 해야 할 일은 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 하위 클래스를 사용하도록 슬라이더를 설정하면 이제 터치 가능한 높이가 43px인 슬라이더가 생겼습니다.

이 솔루션을 사용하고 있습니다 :)

CGRect sliderFrame = self.mySlider.frame;    
sliderFrame.size.height = 142.0; 
[self.mySlider setFrame:sliderFrame];

Uislider 프레임의 높이를 늘려서 Uislider Thumb Hit Area를 증가시킵니다. 이 접근법은 오프셋 및 후속 슬라이더 프레임을 수정 해야하는 필요성을 피합니다.

- (void)viewDidLoad{
    [super viewDidLoad];

    //expand slider hit area
    self.slider.frame = CGRectInset(self.slider.frame, 0, -10);

}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top