더 큰 UISlider는 괜찮지만 추적 영역 문제
문제
내 목표는 엄지손가락 이미지에 대해 높이가 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);
}