Size of default thumb image for iOS slider?

2019-05-01 01:00发布

What is the exact size (width, height) of the (default) thumb image for the iOS slider? Is there perhaps some clever way to coax this out of the system (XCode, iOS)?

I tried

int thumbWidth = slider.currentThumbImage.size.width;

which I found here on this site, but it comes back with 0.

Additional question: The Xcode debugger shows this undocumented variable in the UISlider: CGFloat _hitOffset. Does anyone by chance know what it is and what it's for?

5条回答
贪生不怕死
2楼-- · 2019-05-01 01:32

There is a session video about UI customization in the WWDC 2012 collection:

https://developer.apple.com/videos/wwdc/2012/?id=216

You might find your answer here. Its about UISlider customization too

查看更多
一纸荒年 Trace。
3楼-- · 2019-05-01 01:34

The best way is using a Resizable Image. But the slider thumb size is 23x23 if you don't want to make the image resizable

查看更多
疯言疯语
4楼-- · 2019-05-01 01:35

Here is the swift 4 version:

yourSlider.setThumbImage(UIImage(named: "Knob"), for: .normal)
查看更多
冷血范
5楼-- · 2019-05-01 01:47

If you want change UISlider appearance then use below method

[[UISlider appearance] setThumbImage:[UIImage imageNamed:@"yoursliderimage.png"] forState:UIControlStateNormal];

as well as below code would change you slider track also

UIImage *white = [UIImage imageNamed:@"16x16white.png"];

[movieTimeControl setMinimumTrackImage:[white stretchableImageWithLeftCapWidth:3.0 topCapHeight:0.0] forState:UIControlStateNormal];

[movieTimeControl setMaximumTrackImage:[white stretchableImageWithLeftCapWidth:3.0 topCapHeight:0.0] forState:UIControlStateNormal];

Aplle HIG document doesn't define any size for UISlider thumb image but it should be under normal image size.

查看更多
三岁会撩人
6楼-- · 2019-05-01 01:55

What about this? Works for me:

CGRect trackRect = [self trackRectForBounds:self.bounds];
CGRect thumbRect = [self thumbRectForBounds:self.bounds trackRect:trackRect value:0];
CGSize thumbSize = thumbRect.size;
查看更多
登录 后发表回答