2012-12-11 13 views
0

다음 슬라이더 컨트롤이 필요합니다.사용자 지정 슬라이더를 만드는 방법

  • 총 길이가이 슬라이더
  • 슬라이더와 "액세스"인 총 길이 내의 범위가되는 위치에 있습니다 UISlider 달리
  • (초 총 지속 기간에 대응) 그 "접근 가능한"궤도는 그 이상으로 나아 가지 않습니다.
나는 현재 모두 자신의 장점과 단점을 갖고있는 것 같다 다음 방법을 참조

:

  1. UISlider 서브 클래스를 작성하고 나는 사용자 정의 컨트롤을 만들
  2. 에 새 속성과 기능을 추가 UIView은 UISlider와 UIProgressBar을 포함하고 UISlider과 유사한 API를 제공합니다.
  3. 나는 사용자 지정 그리기 코드로 처음부터 컨트롤을 만듭니다.

내가 놓친 부분이 있는지 확실하지 않습니다. 나는 지금 어떤 접근법이 내 문제에 가장 적합한 지 궁금해하고있다.

답변

2

는 사용자 정의 슬라이더를 만드는 방법을 보여주는 몇 가지 링크입니다

참고 : 일반적으로 UI 사용자 정의 컨트롤을 만들려면 UIControl 클래스에서 클래스를 상속하면됩니다.이 클래스는 원하는 클래스의 속성과 다른 속성을 가질 수 있지만 사용에는주의해야합니다. .

0

옵션 2와 3은 스트레치라고 생각합니다. 당신이 할 수있는 것은 슬라이더 값이 변경되었을 때 호출되는 메소드입니다.이 메소드는 사용자가 트랙에서 허용되는 값을 넘으면 중간에 최대 값을 설정합니다 :

슬라이더 인스턴스를 무언가로 선언하십시오 이와 유사한

UISlider *slider = [[UISlider alloc] initWithFrame:CGRectZero]; 
slider.continuous = TRUE; 
slider.minimumValue = MIN_VALUE; // some min value constant or something? 
slider.maximumValue = SLIDER_MAX_VALUE; // some max value constant for the entire slider 
slider.value = MIN_VALUE; // or anything else you want 

[slider addTarget:self action:@selector(checkBeyondTrack:) forControlEvents:UIControlEventValueChanged]; 
[self.contentView addSubview:slider]; 

지금 당신이 슬라이더

- (void)checkBeyondTrack:(id)sender { 
    UISlider *slider = sender;   

    // if we've attempted to go beyond the value allowed 
    if (slider.value > MAX_TRACK) { 
     [slider setValue:MAX_TRACK animated:YES]; 
    } 
} 

에게 슬라이더의 값이 때마다 정의 된 경우와 같은 클래스에서 checkBeyondTrack 방법을 필요로 (주 비트는 현재 부가 기능의 대상입니다) 사용자가 변경 한 슬라이더 ta check를 수행하고 필요에 따라 값을 재설정하는 rget 메소드 checkBeyondTrack:이 호출됩니다.

  1. https://github.com/barrettj/BJRangeSliderWithProgress
  2. https://github.com/cbpowell/CPSlider
  3. https://github.com/buildmobile/iosrangeslider
  4. https://github.com/taviscaios/TVCalibratedSlider
  5. https://github.com/ole/OBSlider
: 아래
관련 문제