62

有没有一种方法可以为开关状态使用自定义图形来实现 UISwitch?或者作为另一种选择,一个具有 UISwitch 功能的 UIButton?

4

4 回答 4

102

UIButton已经支持“开关”功能。

只需在 Interface Builder 中为“Selected State Configuration”设置不同的图像,并使用 的selected属性UIButton来切换其状态。

于 2010-02-12T21:19:56.483 回答
13

将图像设置为在选定状态下显示:

[button setImage:[UIImage imageNamed:@"btn_graphics"] forState:UIControlStateSelected];

然后在选择器内部进行修饰,设置:

button.selected = YES;

如果要取消另一个按钮的选择,请设置:

otherButton.selected = NO;
于 2012-04-05T09:44:45.383 回答
9

为了构建上面 PGB 和 nurne 所说的内容,在设置状态并附加选择器(事件方法)之后,您需要将此代码放入该选择器中。

- (IBAction)cost:(id)sender 
{
    //Toggle current state and save
    self.buttonTest.selected = !self.buttonTest.selected;

    /**
     The rest of your method goes here.
     */
}
于 2013-04-15T10:12:16.443 回答
3

对于编程倾向:

-(void) addToggleButton {
    CGRect aframe = CGRectMake(0,0,100,100);

    UIImage *selectedImage = [UIImage imageNamed:@"selected"];
    UIImage *unselectedImage = [UIImage imageNamed:@"unselected"];

    self.toggleUIButton = [[UIButton alloc] initWithFrame:aframe];
    [self.toggleUIButton setImage:unselectedImage forState:UIControlStateNormal];
    [self.toggleUIButton setImage:selectedImage forState:UIControlStateSelected];
    [self.toggleUIButton addTarget:self 
                            action:@selector(clickToggle:) 
                  forControlEvents:UIControlEventTouchUpInside];
    [self addSubview:self.toggleUIButton];
}

-(void) clickToggle:(id) sender {
    BOOL isSelected = [(UIButton *)sender isSelected];
    [(UIButton *) sender setSelected:!isSelected];
}
于 2014-02-10T14:14:12.877 回答