iOS开发技巧 - 使用和定制开关控件(UISwitch)
1. 初始化加载到视图界面
(Swift)
import UIKit
class ViewController: UIViewController {
// 1. create a property of type UISwitch
var mainSwitch:UISwitch!
override func viewDidLoad() {
super.viewDidLoad()
// 2. create switch
mainSwitch = UISwitch(frame: CGRect(x: 100, y: 100, width: 0, height: 0))
view.addSubview(mainSwitch)
}
}
(Objective-C)
#import "ViewController.h"
@interface ViewController ()
// 1. create a property of type UISwitch
@property (nonatomic, strong) UISwitch *mainSwitch;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 2. create switch
self.mainSwitch = [[UISwitch alloc] initWithFrame:
CGRectMake(100, 100, 0, 0)];
[self.view addSubview:self.mainSwitch];
}
@end
2. 设置开关状态
(Swift)
mainSwitch.setOn(true, animated: true)
(Objective-C)
[self.mainSwitch setOn:YES];
3. 判断开关状态
(Swift)
if mainSwitch.on{
/* Switch is on */
} else {
/* Switch is off */
}
(Objective-C)
if ([self.mainSwitch isOn]){
NSLog(@"The switch is on.");
} else {
NSLog(@"The switch is off.");
}
4. 添加事件监听
(Swift)
mainSwitch.addTarget(self,
action: "switchIsChanged:",
forControlEvents: .ValueChanged)
func switchIsChanged(sender: UISwitch) {
println("Sender is = \(sender)")
if sender.on{
println("The switch is turned on")
} else {
println("The switch is turned off")
}
}
(Objective-C)
[self.mainSwitch addTarget:self
action:@selector(switchIsChanged:)
forControlEvents:UIControlEventValueChanged];
- (void) switchIsChanged:(UISwitch *)paramSender {
NSLog(@"Sender is = %@", paramSender);
if ([paramSender isOn]){
NSLog(@"The switch is turned on.");
} else {
NSLog(@"The switch is turned off.");
}
}
5. 定制开关UI
/* Adjust the off-mode tint color */
mainSwitch.tintColor = UIColor.redColor()
/* Adjust the on-mode tint color */
mainSwitch.onTintColor = UIColor.brownColor()
/* Also change the knob's tint color */
mainSwitch.thumbTintColor = UIColor.greenColor()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2015-08-01 java基本数据类型转换成byte[]数组
2015-08-01 java中int,char,string三种类型的相互转换
2015-08-01 说一说ASCLL和Unicode
2015-08-01 Java中二进制、十进制、十六进制及ASCII码与String及字节数组与十六进制之间的转换