首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自定义UISlider图像不能正常工作

自定义UISlider图像不能正常工作
EN

Stack Overflow用户
提问于 2013-05-17 00:45:38
回答 1查看 1.5K关注 0票数 1

使用以下代码:

代码语言:javascript
运行
复制
UISlider *slider = [[UISlider alloc]initWithFrame:sliderFrame];
    [slider setThumbImage:[UIImage imageNamed:@"sliderThumb"] forState:UIControlStateNormal];
    UIImage *sliderLeftTrackImage = [[UIImage imageNamed: @"sliderMin"] stretchableImageWithLeftCapWidth: 9 topCapHeight: 0];
    UIImage *sliderRightTrackImage = [[UIImage imageNamed: @"sliderMax"] stretchableImageWithLeftCapWidth: 9 topCapHeight: 0];
    [slider setMinimumTrackImage: sliderLeftTrackImage forState: UIControlStateNormal];
    [slider setMaximumTrackImage: sliderRightTrackImage forState: UIControlStateNormal];

sliderMin和sliderMax图像的大小均为210x34 (与滑块帧大小相同)。sliderMin是蓝色的,sliderMax是红色的。当滑块一直位于左侧时,我正确地看到了红色条。但是,将拇指向右滑动几个像素后,整个条形变为蓝色( sliderMin图像)。显然,我只能看到滑块左侧的蓝色条。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-17 00:57:41

首先,您使用的是过时的API。除非你需要支持iOS 4.3 (为什么?),否则你应该使用resizableImageWithCapInsets:resizingMode:而不是stretchableImageWithLeftCapWidth:topCapHeight:

代码语言:javascript
运行
复制
UIImage *sliderLeftTrackImage = [[UIImage imageNamed: @"sliderMin"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 9, 0, 9)];
UIImage *sliderRightTrackImage = [[UIImage imageNamed: @"sliderMax"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 9, 0, 9)];

现在,鉴于此,您的图像大小是不正确的。当制作一个可调整大小的图像时,图像应该有你需要的任何固定末端,然后在中间1个像素将被平铺以填充其余部分。所以你的滑块图像应该是19像素宽(而不是210)。视网膜版本应该是38像素宽(两端18个像素固定,中间有2个像素将被平铺)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16593101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档