首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在UISegmentedControl中设置禁用段的背景图像

如何在UISegmentedControl中设置禁用段的背景图像
EN

Stack Overflow用户
提问于 2015-05-12 18:09:53
回答 3查看 2.1K关注 0票数 0

我已经尝试在UISegmentedControl中将颜色设置为禁用分段。但还没有成功。我想知道是否可以在UISegmentedControl中为禁用的片段设置背景图像。

我尝试了以下代码,但它不起作用:

代码语言:javascript
运行
复制
NSDictionary *attrs = @{ UITextAttributeTextColor : [UIColor lightGrayColor] };
[self.controlStatus setTitleTextAttributes:attrs forState:UIControlStateDisabled];

[self.controlStatus setBackgroundImage:[[UIImage imageNamed:@"img.png"] retain] forState:UIControlStateDisabled barMetrics:nil];

前两条线路工作正常。禁用时,我可以设置颜色,但不能设置背景图像或背景颜色。

有没有办法做到这一点??

EN

回答 3

Stack Overflow用户

发布于 2015-05-12 18:26:44

更新:你必须按照下面的方法来做。

代码语言:javascript
运行
复制
[[UISegmentedControl appearance] setBackgroundImage:[UIImage imageNamed:@"SegmentViewDisabled"]
                                    forState:UIControlStateDisabled
                                    barMetrics:UIBarMetricsDefault];

如果你将分隔器图像设置为禁用状态,看起来你会遇到一个来自苹果终端的bug,找到了here

你可以这样做。其中SegmentViewDisabled是您的图像资产目录中的图像资产。

代码语言:javascript
运行
复制
[self.controlStatus setBackgroundImage:[UIImage imageNamed:@"SegmentViewDisabled"] forState:UIControlStateDisable barMetrics:UIBarMetricsDefault];
票数 0
EN

Stack Overflow用户

发布于 2015-05-12 18:43:51

UISegmentControl在两个段之间有一个分隔符。通过使用下面的代码,您可以更改分隔线背景。

代码语言:javascript
运行
复制
[segmentedCtrl setDividerImage:[UIImage imageNamed:@"divider_selected.png"] forLeftSegmentState:UIControlStateSelected rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[segmentedCtrl setDividerImage:[UIImage imageNamed:@"divider_normal.png"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
票数 0
EN

Stack Overflow用户

发布于 2015-05-12 18:51:16

如果您需要自定义分段控件的外观,而不是标准着色,则可以考虑使用自定义图像来实现此目的。由于分段控件对于纵向和横向设备方向具有不同的指标,请记住为每组指标指定适当的图像。

您可以使用background image :barMetrics:方法为分段控件的每个控件状态设置背景图像。还应为左侧和右侧分段状态的每个组合指定分隔线图像,以使选定或高亮显示的分段具有与正常状态下的分段不同的外观,如下所示:

image1、image2、image3是不同的图像

代码语言:javascript
运行
复制
    [mySegmentedControl setDividerImage:image1 forLeftSegmentState:UIControlStateNormal  rightSegmentState:UIControlStateNormal barMetrics:barMetrics];

    [mySegmentedControl setDividerImage:image2 forLeftSegmentState:UIControlStateSelected rightSegmentState:UIControlStateNormal barMetrics:barMetrics];

    [mySegmentedControl setDividerImage:image3 forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateSelected barMetrics:barMetrics];

Source

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

https://stackoverflow.com/questions/30187738

复制
相关文章

相似问题

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