函数的代码来至iphone开发秘籍,Thanks Erica Sadun。
UISwitch类:
UISwitch类的单薄到我不知道该说什么了。不过,UIControl对象通常是由一系列的子视图构建的。通过导航控件的视图,可以公开的定制通常不能从标准SDK中访问的对象。这种定制依赖于对控件子视图树的理解,通过下面这样的函数可以递归遍历视图树,就可以了解每一个视图了。
- (void)explode:(id)aView level:(int)aLevel {
}
初始化级别为0,打出来的结果是:
UISwitch:UIControl
-_UISwitchSlider:UISlider
--UIImageView:UIView
--UIImageView:UIView
--UIView:UIResponder
---UILabel:UIView
---UILabel:UIView
--UIImageView:UIView
然后就可以开始封装自定义UISwitch字体和字体颜色的定制功能
@interface UISwitch (extended)
- (void) setAlternateColors:(BOOL) boolean;//这是文档未记录的特性,显示为橘黄色的背景。
@end
@interface _UISwitchSlider : UIView
@end
@interface UICustomSwitch : UISwitch
- (void) setLeftLabelText: (NSString *) labelText;
- (void) setRightLabelText: (NSString *) labelText;
@end
@implementation UICustomSwitch
- (_UISwitchSlider *) slider {
}
- (UIView *) textHolder {
}
- (UILabel *) leftLabel {
}
- (UILabel *) rightLabel {
}
- (void) setLeftLabelText: (NSString *) labelText {
}
- (void) setRightLabelText: (NSString *) labelText {
}
@end
下面是测试代码:
- (void)loadView
{
}
这样子定制后的结果老强大了(图1)。
图 1 图2
最后,悲催的事情还是发生了,我们选择了使用资源给出的两张图(图2),结果是我们放弃了那个平滑切换的动画把它做成了一个按钮,点一下换一张图片,记住一个状态。