gpt4 book ai didi

ios - UISegmentedControl 背景图像异常行为

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:44:45 24 4
gpt4 key购买 nike

我正在做一个 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

(背景图片又被拉长了……)

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

编辑

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

最佳答案

看起来设置完整背景图像并不是处理自定义分段按钮的最佳方式。找到示例 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com