• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - UISegmentedControl 背景图片奇怪的行为

[复制链接]
菜鸟教程小白 发表于 2022-12-12 09:12:22 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在开发一个 iOS 项目,遇到了这个奇怪的问题。我有一个 bar 样式的 UISegmentedControl 元素。它有 3 个部分。这些片段的固定大小为 80。我还有 3 张图像,每个片段都被选为背景。这是其中之一`

enter image description here

当 View 被加载时,其中一个片段被设置为选中,这个图像被设置为背景,如下所示:

[self.genderSelectionButton setBackgroundImage:[UIImage imageNamed"gender-switch01.png"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

现在,当我在 5.1 模拟器上运行项目时,我得到了分段按钮的扭曲 View :

enter image description here

如您所见,中间部分保持我给出的大小,但图像从中间到边缘有点拉伸(stretch)。 即使我已将其设置为 NO,所选段也会突出显示。 在监听按钮选择的方法中,我更改了背景图像并得到以下信息: enter image description here

(背景图又被拉伸(stretch)了……)

iOS6 上的情况几乎相同。 现在是我做错了什么,还是有办法解决这个问题?

编辑

找到了一个更好的实现,它为普通按钮、选定按钮和分隔符使用单独的图像。请参阅下面的答案。



Best Answer-推荐答案


似乎设置完整的背景图像不是处理自定义分段按钮的最佳方式。找到示例 here .

这是完成所有工作的基本代码:

UIImage *segmentSelected = 
    [[UIImage imageNamed"segcontrol_sel.png"] 
        resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 0, 15)];
UIImage *segmentUnselected = 
    [[UIImage imageNamed"segcontrol_uns.png"] 
        resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 0, 15)];
UIImage *segmentSelectedUnselected = 
    [UIImage imageNamed"segcontrol_sel-uns.png"];
UIImage *segUnselectedSelected = 
    [UIImage imageNamed"segcontrol_uns-sel.png"];
UIImage *segmentUnselectedUnselected = 
    [UIImage imageNamed"segcontrol_uns-uns.png"];

[[UISegmentedControl appearance] setBackgroundImage:segmentUnselected 
    forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setBackgroundImage:segmentSelected 
    forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];

[[UISegmentedControl appearance] setDividerImage:segmentUnselectedUnselected 
    forLeftSegmentState:UIControlStateNormal 
    rightSegmentState:UIControlStateNormal 
    barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:segmentSelectedUnselected 
    forLeftSegmentState:UIControlStateSelected 
    rightSegmentState:UIControlStateNormal 
    barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] 
    setDividerImage:segUnselectedSelected 
    forLeftSegmentState:UIControlStateNormal 
    rightSegmentState:UIControlStateSelected 
    barMetrics:UIBarMetricsDefault];

关于ios - UISegmentedControl 背景图片奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15111300/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap