iOS基础控件--UISwitch

本文介绍了iOS中的UISwitch控件,包括其创建、属性、方法和事件监听。虽然UISwitch在实际开发中受限于大小不可设置及部分属性无效,导致应用范围有限,但在某些设计场景下,开发者仍需掌握如何利用它或通过自定义UIView实现类似功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UISwitch是一个开关控件,一般用在设置界面上的一些开关。由于这个控件的一些特性,在开发中并不能很好的满足设计需求,所以一般不常使用。

UISwitch创建

UISwitch是继承自UIControl的,是UIView的非直接子类,所以创建也是使用同样的方法。

    //创建UISwitch,UISwitch的大小是固定的,所以在创建时可以不设置大小。
    //注意,在创建UISwitch时不要以switch命名创建的对象,因为switch是OC的关键字。
    UISwitch *mySwitch = [[UISwitch alloc] initWithFrame:CGRectMake(100, 300, 0, 0)];

UISwitch的属性

在UISwitch的头文件中可以看到这个控件的属性

@property(nullable, nonatomic, strong) UIColor *onTintColor NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;
@property(null_resettable, nonatomic, strong) UIColor *tintColor NS_AVAILABLE_IOS(6_0);
@property(nullable, nonatomic, strong) UIColor *thumbTintColor NS_AVAILABLE_IOS(6_0) UI_APPEARANCE_SELECTOR;

@property(nullable, nonatomic, strong) UIImage *onImage NS_AVAILABLE_IOS(6_0) UI_APPEARANCE_SELECTOR;
@property(nullable, nonatomic, strong) UIImage *offImage NS_AVAILABLE_IOS(6_0) UI_APPEARANCE_SELECTOR;

@property(nonatomic,getter=isOn) BOOL on;

在实际的开发中我们会发现UISwitch的onImage属性和offImage属性是无效的,这里就不多做解释了。不信的可以自己去设置一下。

    //定制开关颜色UI
    //tintColor 关状态下的背景颜色
    mySwitch.tintColor = [UIColor redColor];
    //onTintColor 开状态下的背景颜色
    mySwitch.onTintColor = [UIColor yellowColor];
    //thumbTintColor 滑块的背景颜色
    mySwitch.thumbTintColor = [UIColor blueColor];

    //    mySwitch.onImage = [UIImage imageNamed:@"on.png"];   //无效
    //    mySwitch.offImage = [UIImage imageNamed:@"off.png"]; //无效
    //设置开关的背景颜色  设置后会发现开关是矩形的
    mySwitch.backgroundColor = [UIColor yellowColor];

    //判断开关的状态
    if (mySwitch.on) {
        NSLog(@"switch is on");
    } else {
        NSLog(@"switch is off");
    }

UISwitch的方法

- (void)setOn:(BOOL)on animated:(BOOL)animated; // does not send action

除了创建方法,只有一个设置开关的方法。

    // 设置开关状态(默认是 关) 这个方法等同于属性on的设置
    //    mySwitch.on = YES;
    [mySwitch setOn:YES animated:true];  //animated

UISwitch事件监听

因为开关有控制交互,所以要有监听事件,和按钮一样,使用方法给开关添加一个监听。

    //添加事件监听
    [mySwitch addTarget:self action:@selector(switchAction:) forControlEvents:UIControlEventValueChanged];

上面代码的解释和按钮的监听事件一样,只是按钮一般ControlEvents是点击(UIControlEventTouchUpInside),开关是改变(UIControlEventValueChanged)。

总结

前面说到UISwitch的大小是不能设置的,只能通过缩放变形来改变展示的开关的大小。还有2个属性的无效,这就使得在开发中这个控件有很大的局限性,越是开放的东西应用才能越广泛。在一些设计中也会有一些开关,但是因为设计的多样性不能使用UISwitch。所以UIView的灵活运用就很重要,使用UIView也可以制作一个精美的开关。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值