Я использую a UISlider
в моем приложении, но я хотел бы использовать пользовательский "стиль" для него. Я изменил ползунок на свое собственное изображение, но есть ли способ изменить панель также? У меня есть изображение панели, которое я хотел бы использовать, но не видеть, как сделать это.
Я нашел, как изменить макс. изображение и минимальное изображение, но не саму панель.
Вы правильно использовали методы -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];
Вы можете использовать одно и то же изображение как для минимальной, так и для максимальной части.
Вам необходимо создать подкласс UISlider и переопределить:
- (CGRect)trackRectForBounds:(CGRect)bounds
Обсуждение Не следует вызывать этот метод напрямую. Если вы хотите настроить прямоугольник дорожки, вы можете переопределить этот метод и вернуть другой прямоугольник. Возвращенный прямоугольник используется для масштабирования дорожки и изображений ползунков во время рисования.
Самым простым решением будет отображение UIImage за элементом управления для представления трека. Ручку пальца можно изменить с помощью:
[mySlider setThumbImage:[UIImage imageNamed:@"thumb_image.png"] forState:UIControlStateNormal];
Побочным эффектом этого является то, что дорожка не отображается, если вы не предоставите свою собственную. Это, в сочетании с UIImage, позволит вам получить пользовательский UISlider без необходимости создавать подклассы.