Iphone UI开关-从开/关更改为是/否

Iphone UI开关-从开/关更改为是/否,iphone,uiswitch,Iphone,Uiswitch,有人知道我可以如何将“开”和“关”的文本标签更改为“是”和“否”吗 我是和你一起做的 ((UILabel *)[[[[[[switchControl subviews] lastObject] subviews] objectAtIndex:2] subviews] objectAtIndex:0]).text = @"Yes"; ((UILabel *)[[[[[[switchControl subviews] lastObject] subviews]

有人知道我可以如何将“开”和“关”的文本标签更改为“是”和“否”吗

我是和你一起做的

            ((UILabel *)[[[[[[switchControl subviews] lastObject] subviews] objectAtIndex:2] subviews] objectAtIndex:0]).text = @"Yes";
        ((UILabel *)[[[[[[switchControl subviews] lastObject] subviews] objectAtIndex:2] subviews] objectAtIndex:1]).text = @"No";
然而,随着iOS 4.2的发布,这一功能不再受支持(苹果可能并不推荐这一功能)

我的客户坚持选择是/否。如果有任何建议,我将不胜感激


非常感谢

为此,您需要实现自定义UI开关。或者使用一个已经实现的:)(检查并)

Vladimir的答案很好,但在我看来,这里有一个更好的实现:

除了设置自定义文本外,更容易更改UISwitch的大小和颜色,从而获得更清晰的结果


它是根据麻省理工学院的许可证发布的。看一看

事实证明,您可以使用以下项目创建自定义UI开关:

  • 全景
  • 按钮
  • 两个UILabel
  • 背景图像
  • 布尔值
首先,您需要将QuartzCore.framework添加到项目中,并将
#import
导入到视图控制器中

接下来,使用Interface Builder将UIScrollView添加到视图中。滚动视图将是您的自定义UI开关。 接下来,将按钮和两个标签添加到滚动视图中。一个标签表示“是”,另一个表示“否”

将图像添加到按钮并将其类型设置为“自定义”。这是我使用的图像:

将标签放置在图像的蓝色和白色区域上。调整ScrollView,使其刚好足以显示图像的蓝色部分和拇指nob

将以下行添加到viewDidLoad:

self.mySwitch.layer.cornerRadius = 13.5;
mySwitch是ScrollView的名称,13.5是ScrollView高度的一半。上面的语句将ScrollView更改为具有类似UISwitch的圆形端点

要激活自定义开关,您需要将按钮“内部触碰”事件绑定到iAction。以下是我在事件处理程序中使用的代码:

-(IBAction)mySwitchButton:(id)sender {
    self.myValue = !self.myValue;
    CGPoint scrollPoint = CGPointMake((self.myValue)? 43.0: 0, 0.0);
    [mySwitch setContentOffset:scrollPoint animated:YES];
}
其中myValue是包含开关状态的布尔变量,43.0是必须移动图像才能将开关置于关闭位置的点数


这就是全部

万岁!在iOS 6中,可以分别指定用于打开/关闭状态的图像。因此,这可用于显示是/否图像(或表示您希望使用的文本的任何图像,而不是先前限制的开/关)

图像应为77像素宽,27像素高,文本(每个州一个图像)应水平居中于77像素宽内。我使用透明背景作为文本,因此我仍然可以使用色调作为背景,这仍然适用于此


当然,只提供文本似乎更容易,而不必使用文本的图像,但至少我非常感谢这个新选项。

在iOS 6中,可以指定用于UI开关开/关状态的图像,但不能指定文本。 这将在需要国际化时带来麻烦,因为 必须为每种语言提供图像文本,而不仅仅是文本。 此外,UISwitch图像的大小是固定的,限制了文本长度

基于以上原因,我喜欢JSWilson的答案:简单而灵活

为了使开发人员不再需要手动添加所需的控件,我编写了一个自定义的CRDScrollSwitch类,您可以在我的GitHub存储库中找到它:

很酷的代码,但对于iOS 6及以上版本,是否有这样的解决方案,但与iOS 5兼容?不幸的是,没有,这就是为什么这项功能备受期待的原因。如果你喜欢代码,请投赞成票:-)如果你只需要一些快速的英语是/否图片,这里是我使用的图片。随便拿吧如果操作系统介于5.0和6.0之间,该怎么办?不幸的是,这在iOS 7中不起作用。请参阅的讨论部分。我还定制了一个UI开关:@Rocotilos,那么苹果的批准呢?
 if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0"))
 {
     [mySwitch setOnImage: [UIImage imageNamed:@"UISwitch-Yes"]];
     [mySwitch setOffImage:[UIImage imageNamed:@"UISwitch-No"]];
 }