Измените изображение панели iPhone UISlider

Я использую a UISlider в моем приложении, но я хотел бы использовать пользовательский "стиль" для него. Я изменил ползунок на свое собственное изображение, но есть ли способ изменить панель также? У меня есть изображение панели, которое я хотел бы использовать, но не видеть, как сделать это.

Я нашел, как изменить макс. изображение и минимальное изображение, но не саму панель.

31
задан Alex Cio 12 June 2015 в 08:54
поделиться

3 ответа

Вы правильно использовали методы -setMinimumTrackImage: forState: и -setMaximumTrackImage: forState: . Что вы упустили, так это то, что вы должны предоставить им растягиваемый UIImage , остальное позаботится автоматически:

UIImage *sliderLeftTrackImage = [[UIImage imageNamed: @"SliderMin.png"] stretchableImageWithLeftCapWidth: 9 topCapHeight: 0];
UIImage *sliderRightTrackImage = [[UIImage imageNamed: @"SliderMax.png"] stretchableImageWithLeftCapWidth: 9 topCapHeight: 0];
[mySlider setMinimumTrackImage: sliderLeftTrackImage forState: UIControlStateNormal];
[mySlider setMaximumTrackImage: sliderRightTrackImage forState: UIControlStateNormal];

Вы можете использовать одно и то же изображение как для минимальной, так и для максимальной части.

60
ответ дан 27 November 2019 в 21:32
поделиться

Вам необходимо создать подкласс UISlider и переопределить:

- (CGRect)trackRectForBounds:(CGRect)bounds

Обсуждение Не следует вызывать этот метод напрямую. Если вы хотите настроить прямоугольник дорожки, вы можете переопределить этот метод и вернуть другой прямоугольник. Возвращенный прямоугольник используется для масштабирования дорожки и изображений ползунков во время рисования.

1
ответ дан 27 November 2019 в 21:32
поделиться

Самым простым решением будет отображение UIImage за элементом управления для представления трека. Ручку пальца можно изменить с помощью:

[mySlider setThumbImage:[UIImage imageNamed:@"thumb_image.png"] forState:UIControlStateNormal];

Побочным эффектом этого является то, что дорожка не отображается, если вы не предоставите свою собственную. Это, в сочетании с UIImage, позволит вам получить пользовательский UISlider без необходимости создавать подклассы.

25
ответ дан 27 November 2019 в 21:32
поделиться