【问题标题】:UISegmentedControll not setting correct imageUISegmentedControll 未设置正确的图像
【发布时间】:2014-03-24 19:07:31
【问题描述】:

我正在尝试为我的UISegmentedControll 中的每个段控制索引设置自定义图像

我是这样设置图像的:

UIImage *selectAll = [UIImage imageNamed:@"Select All Active"];
[selectAll imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

[self.segmentedControl setImage:selectAll forSegmentAtIndex:0];

但是,我只是在段索引中得到一个空白,并且图像无法正确显示。

有没有其他方法可以做到这一点?

我正在为 iOS7 构建应用程序。

编辑

这是在 IB 或 Code 中设置的图像的样子:

【问题讨论】:

  • if (selectAll == nil) { NSLog(@"selectAll Image nil"); }检查你selectAll
  • 我已经更新了问题 - 请查看我收到的图片

标签: objective-c ios7 uisegmentedcontrol


【解决方案1】:

听起来您的图像不存在,您确定它被命名为“Select All Active.png”吗?我建议你先把它重命名为 test.png 看看它是否有效。

【讨论】:

  • 是的,测试了图像 - 它确实存在。我按照你说的做了,我所说的空白是指我可以在索引 0 中看到 UiImage 轮廓 - 但它就像是蓝色调。
  • 您可以尝试通过xCode中的界面构建器创建一个分段控件,并使用各种设置来查看是否可以改善对齐和覆盖?
【解决方案2】:

我认为你的 UIImage 对象是 nil 所以检查正在使用。

UIImage *selectAll = [UIImage imageNamed:@"Select All Active"];
if (selectAll == nil) {
    NSLog(@"nil");
}

如果不是nil你可以尝试使用

UIImage *selectAll;
if ([UIImage instancesRespondToSelector:@selector(imageWithRenderingMode:)]) {
    selectAll = [[UIImage imageNamed:@"Select All Active"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
}else {
    selectAll = [UIImage imageNamed:@"Select All Active"];
}
self.segmentedControl.tintColor = [UIColor clearColor];
[self.segmentedControl setImage:selectAll forSegmentAtIndex:0];

【讨论】:

  • 谢谢 - 我试过了,而且图像肯定在那里 - 用图像的屏幕截图更新了问题。
【解决方案3】:

我认为您看到的是UISegmentedControl 的分隔符。您还需要为分隔线设置图像..

【讨论】:

    猜你喜欢
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    相关资源
    最近更新 更多