【发布时间】:2011-01-16 08:15:54
【问题描述】:
有没有一种方法可以使用自定义图形来实现 UISwitch 的开关状态? 或者作为另一种选择,一个具有 UISwitch 功能的 UIButton?
【问题讨论】:
-
无论谁投票决定将此问题作为完全相同的副本结束,您至少应该提供一条评论,说明它与哪个帖子的副本相同。
有没有一种方法可以使用自定义图形来实现 UISwitch 的开关状态? 或者作为另一种选择,一个具有 UISwitch 功能的 UIButton?
【问题讨论】:
对于编程倾向:
-(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];
}
【讨论】:
要建立在上面 PGB 和 nurne 所说的基础上,在您设置状态并附加一个选择器(事件方法)之后,您需要将此代码放入该选择器中。
- (IBAction)cost:(id)sender
{
//Toggle current state and save
self.buttonTest.selected = !self.buttonTest.selected;
/**
The rest of your method goes here.
*/
}
【讨论】:
将图像设置为在选定状态下显示:
[button setImage:[UIImage imageNamed:@"btn_graphics"] forState:UIControlStateSelected];
然后在选择器内部进行修饰,设置:
button.selected = YES;
如果你想取消另一个按钮的选择,设置:
otherButton.selected = NO;
【讨论】:
UIButton 已经支持“切换”功能。
只需在 Interface Builder 中为“Selected State Configuration”设置不同的图像,然后使用UIButton 的selected 属性来切换其状态。
【讨论】: