У меня не было никаких предложений относительно того, как скрыть дорожку слайдера, когда она находится за большим пальцем, поэтому я отправляю свое решение, если у кого-то другая проблема. Если у кого-то есть лучший способ сделать это, пожалуйста, дайте мне знать.
Для того чтобы иметь прозрачное изображение большого пальца и не иметь трек в центре его, мне пришлось установить изображения дорожки слайдера на пустые изображения и настроить изображение собственного слайдера, которое будет просто изменяться каждый раз значение ползунка изменяется. Мало того, что я буду менять ширину пользовательской дорожки слайдера, но мне также придется обновлять X-позицию изображения каждый раз, когда я изменяю его размер так, чтобы он соединился с конечным изображением моей дорожки слайдера.
В моем случае у меня есть ползунок, который установлен в 0, а его Макс установлен на ширину ползунка. Моя пользовательская дорожка слайдера появится только на правой стороне большого пальца. Таким образом, когда вы вставляете большой палец вправо, панель сжимается, а левая сторона становится четкой.
Сначала я настраиваю изображение слайдера и настраиваю слайдер для пустых изображений.
- (void)viewDidLoad {
[super viewDidLoad];
UIImage *thumbImage =[UIImage imageNamed:@"answerSlider.png"];
[_slider setMinimumTrackImage:[UIImage new] forState:UIControlStateNormal];
[_slider setMaximumTrackImage:[UIImage new] forState:UIControlStateNormal];
[_slider setThumbImage:thumbImage forState:UIControlStateNormal];
thumbImage = nil;
_slider.value = 0;
}
В ViewWillApear У меня есть вызов для настройки моей пользовательской дорожки SLider, которую я создам.
- (void)viewDidAppear:(BOOL)animated{
[self updateSlideBarLength];
}
Внутри updateSLideBarLength Пользуюсь значение ползунка, чтобы помочь определить ширину моей дорожки ползунка изображения.
- (void)updateSlideBarLength{
// Get Position Of Slider
CGFloat sliderValue = _slider.value;
CGFloat thumbImageWidth = 58; // this is the width of my thumb image
CGFloat sliderControlWidth = 288.0f; // This is a constant number in my case
CGFloat sliderWidth = sliderControlWidth - thumbImageWidth - sliderValue;
CGFloat sliderBarHeight = 2.0f;
// Reset Width Of aFrame
CGFloat sliderEndY = _sliderEnd.frame.origin.y;
CGFloat sliderEndX = _sliderEnd.frame.origin.x;
CGFloat sliderBarY = sliderEndY + (_sliderEnd.frame.size.height/2 - 1);
CGFloat sliderBarX = sliderEndX - sliderWidth + (_sliderEnd.frame.size.width/2);
CGRect aframe = CGRectMake(sliderBarX, sliderBarY, sliderWidth, sliderBarHeight);
if (_sliderBar == nil) {
NSLog(@"Slider Bar Doesnt Exist");
_sliderBar = [[UIImageView alloc] initWithFrame:aframe];
_sliderBar.image = [UIImage imageNamed:@"sliderBar.png"];
[self.view addSubview:_sliderBar];
[self.view bringSubviewToFront:_sliderBar];
}
_sliderBar.frame = aframe;
}
И наконец, я уверен, что updateSliderBarLength вызывается каждый раз, когда изменяется значение ползунка.
- (IBAction)sliderMoved:(id)sender {
[self updateSlideBarLength];
}
Это работает, хотя я должен был изменить значение Max моего ползунка так, что след персонализированных слайдер Я создал всегда выстраивается с краем пальца изображения. При перемещении большого пальца, когда значение увеличилось, дорожка слайдера начала нарушать изображение большого пальца. Увеличив значение ползунка, я смог остановить это. Опять же, я не уверен, что это лучший способ сделать это, но он работает для меня. Позже, когда у меня будет больше Rep и я могу опубликовать Картинки, я отредактирую это сообщение, чтобы помочь каждому визуализировать то, что я описываю.
Post image then Было бы лучше понять ...... – Spynet