UISegmentedControl选项切换示例

两个选项的切换操作、响应事件、外观自定义这些事,用UISegmentedControl搞定再合适不过了。

iOS 的UISegmentedControl算是个比较实用的控件,适合做顶部菜单栏或者列表筛选功能。这个 Demo 直接给你撸好了控件的创建、点击响应、样式修改,省心不少。

像下面这段 Objective-C 代码,就演示了怎么创建控件并加到界面上:

NSArray *titles = @[@"选项 1", @"选项 2"]; 
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:titles];
segmentedControl.frame = CGRectMake(0, 200, 30);
[self.view addSubview:segmentedControl];

选中哪个段就响应哪个事件?那就加个IBAction,Swift 版本的响应代码也一并贴上了:

@IBAction func segmentedControlValueChanged(_ sender: UISegmentedControl) {
  if sender.selectedSegmentIndex == 0 {
    print("选择了选项 1")
  } else {
    print("选择了选项 2")
  }
}

控件样式也别忽略,比如改个颜色、字体之类的,用setTitleTextAttributes:forState:就能搞定:

NSDictionary *attributes = @{NSForegroundColorAttributeName : [UIColor blueColor]};
[segmentedControl setTitleTextAttributes:attributes forState:UIControlStateSelected];

整个 Demo 打包在UISegmentedControllerTest项目里,应该是个 Xcode 工程,里面有.swift.m文件,还有 Storyboard 之类的资源。你可以照着改,也可以直接拿去复用。

如果你平时写筛选页、标签切换这类功能比较多,建议你看看这个例子,挺省事的。顺带一提,想深入了解Objective-CSwift 混编,可以看看下面这些链接,内容还挺全:

zip 文件大小:74.71KB