iOS App开发中的UISegmentedControl分段组件用法总结

UISegmentedControl分段控件代替了桌面OS上的单选按钮。不过它的选项个数非常有限,因为你的IOS设备屏幕有限。当我们需要使用选项非常少的单选按钮时它很合适。
一、创建

代码如下:

UISegmentedControl* mySegmentedControl = [[UISegmentedControl alloc]initWithItems:nil];

是不是很奇怪没有指定位置和大小呢?没错,我确实在他的类声明里只找到 initWithItems 而未找到 initWithFrame ,所以他不需要指定,不过我看到了另一个方法,这个方法可以设置Item的宽度:

代码如下:

mySegmentedControl setWidth:100 forSegmentAtIndex:0];//设置Item的宽度

二、属性


代码如下:

mySegmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;//风格

可以视使用的场合,有三种风格选择,如下:

代码如下:

typedef enum { 
    UISegmentedControlStylePlain,     // large plain 有灰边的大白按钮,适合偏好设置单元 
    UISegmentedControlStyleBordered,  // large bordered 黑边的大白按钮,适用于表格单元 
    UISegmentedControlStyleBar,       // small button/nav bar style. tintable 小按钮,适合导航栏 
    UISegmentedControlStyleBezeled,   // large bezeled style. tintable 
} UISegmentedControlStyle;

如果你使用的是 UISegmentedControlStyleBar 风格,还可以用空间的 tintColor 属性为整个控件设置渲染色彩:

代码如下:

UIColor *myTint = [[ UIColor alloc]initWithRed:0.66 green:1.0 blue:0.77 alpha:1.0]; 
mySegmentedControl.tintColor = myTint;

三、添加、删除片段
每个分段控件的片段都是一个按钮,其中包含一个标签或图片。你需要在你的控件中为每个控件创建一个片段。只要屏幕放得下,就可以有许多片段,但用户同一时刻只能选择一个片段。

代码如下:

[mySegmentedControl insertSegmentWithTitle:@"First" atIndex:0 animated:YES]; 
[mySegmentedControl insertSegmentWithTitle:@"Second" atIndex:2 animated:YES];

每个
按钮都被赋予一个索引,用这个索排序以及标识。
你也可以添加一个含有图像的片段,用inserSegmentWithImage

代码如下:

[mySegmentedControl insertSegmentWithImage:[UIImage imageNamed:@"pic"]  atIndex:3 animated:YES];

删除片段

代码如下:

[mySegmentedControl removeSegmentAtIndex:0 animated:YES];//删除一个片段 
[mySegmentedControl removeAllSegments];//删除所有片段

四、片段标题


代码如下:

[mySegmentedControl setTitle:@"ZERO" forSegmentAtIndex:0];//设置标题 
NSString* myTitle = [mySegmentedControl titleForSegmentAtIndex:1];//读取标题

五、图像
每个分段也可以设置图像:

代码如下:

[mySegmentedControl setImage:[UIImage imageNamed:@"pic"] forSegmentAtIndex:1];//设置 
UIImage* myImage = [mySegmentedControl imageForSegmentAtIndex:2];//读取

注意:图像不会自动调整大小,图片多大就会原生地显示多大,所以你要通知做图的美工大小要精确。

六、选中分段
分段控件的默认行为是,一旦按钮被选中就一直保持,直到另外一个按钮被选中为止。你可以改变这种默认的行为,变成按钮按下后很快就自动释放。将控件的momentary属性设为YES:

代码如下:

mySegmentedControl.momentary = YES;

注意:开启这个功能后点触片段不会更新 selectedSegmentedIndex,因此也就无法通过这个属性得到当前选取的片段。
初始化默认片段
默认情况下,除非你指定,否则不会有任何片段被选中。要设置 selectedSegmentedIndex 属性:

代码如下:

mySegmentedControl.selectedSegmentedIndex = 0;

七、显示控件


代码如下:

[parentView addSubview:mySegmentedControl];//添加到父视图

代码如下:

self.navigationItem.titleView = mySegmentedControl;//添加到导航栏

八、读取控件
通过 selectedSegmentedIndex 属性,可以读取当前选中分段的值,这个值就是选中片段的索引号。

代码如下:

int x = mySegmentedControl. selectedSegmentedIndex;

九、通知
要接收片段选取的通知,可以用UIControl类的 addTarget 方法,为 UIControlEventValueChanged 事件添加一个动作:

代码如下:

[mySegmentedControl addTarget:self action:@selector(selected:) forControlEvents:UIControlEventValueChanged];

只要选中了一个片段,你的动作方法就会被调用:

代码如下:

-(void)selected:(id)sender{ 
    UISegmentedControl* control = (UISegmentedControl*)sender; 
    switch (control.selectedSegmentIndex) { 
        case 0: 
            // 
            break; 
        case 1: 
            // 
            break; 
        case 2: 
            // 
            break; 
             
        default: 
            break; 
    } 
}

十、设置圆角以及设置选中颜色为空


代码如下:

UISegmentedControl *seg = [[UISegmentedControl alloc]initWithItems:[NSArray arrayWithObjects:@"设置",@"知道了", nil]];

seg.frame = CGRectMake(10,0, CGRectGetWidth(self.view.frame) - 20, 35);

seg.center = isbluetoothOffAlerView.center;

seg.layer.borderColor = [UIColor whiteColor].CGColor;

seg.layer.borderWidth = 2;

seg.tintColor = [UIColor whiteColor];

seg.backgroundColor = [UIColor clearColor];

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], NSForegroundColorAttributeName,[UIFont systemFontOfSize:24],NSFontAttributeName,nil];

[seg setTitleTextAttributes:dic forState:UIControlStateNormal];

seg.layer.cornerRadius = 15;

seg.layer.masksToBounds = YES;

(0)

相关推荐

  • 详解iOS App中UISwitch开关组件的基本创建及使用方法

    一.第一种创建UISwitch组件的方法,在代码中动态创建. 1.打开Xcode, 新建项目Switch,选择Single View Application. 2.打开ViewController.m文件在viewDidLoad方法里添加代码: 复制代码 代码如下: (void)viewDidLoad  {      [super viewDidLoad];      UISwitch *switchButton = [[UISwitch alloc] initWithFrame:CGRectM

  • iOS App开发中UISearchBar搜索栏组件的基本用法整理

    基本属性 复制代码 代码如下: @UISearchBar search = [[UISearchBar alloc]initWithFrame:CGRectMake(0,44,320,120)]; pragma mark -基本设置 复制代码 代码如下: //控件的样式 默认--0白色,1是黑色风格 /* UIBarStyleDefault          = 0, UIBarStyleBlack            = 1, search.barStyle =UIBarStyleDefau

  • 详解iOS App中UIPickerView滚动选择栏的添加方法

    1.UIPickerView的宽度和高度是固定的,纵向是320216,横向是568162 2.属性: 复制代码 代码如下: @property(nonatomic,readonly)NSInteger numberOfComponents; // 选择框的行数 @property(nonatomic,assign)idUIPickerViewDataSource> dataSource; (类似于UITableView) @property(nonatomic,assign)idUIPicker

  • 详解iOS App开发中UIViewController的loadView方法使用

    当你访问一个ViewController的view属性时,如果此时view的值是nil,那么,ViewController就会自动调用loadView这个方法.这个方法就会加载或者创建一个view对象,赋值给view属性. loadView默认做的事情是:如果此ViewController存在一个对应的nib文件,那么就加载这个nib.否则,就创建一个UIView对象. 如果你用Interface Builder来创建界面,那么不应该重载这个方法. 控制器的loadView方法以及view属性

  • 详解iOS App开发中改变UIButton内部控件的基本方法

    UIButton内部默认有个UIImageView.UILabel控件,可以分别用下面属性访问: 复制代码 代码如下: @property(nonatomic,readonly,retain) UIImageView *imageView; @property(nonatomic,readonly,retain) UILabel     *titleLabel; UIButton之所以能显示文字,完全是因为它内部的titleLabel也,也就是说,UIButton的setTitle:forSta

  • iOS开源一个简单的订餐app UI框架

    前言 学 Swift 也有一段时间了,做了一些小的 demo.一直想做个完整的项目,发现这边学校的外卖订餐也逐渐流行起来,不像中国有那么多强大的外卖软件,美国也有,但不多,起码中国人对那些软件都不太熟知也不怎么用.打算专门针对午餐的外卖做个app,做了几天,只做出个 UI,看上去很小的软件,新手做起来感觉东西还是有点多. Swift 如何与后端交互 之类的之后再慢慢学吧,有数据库之类的我都挺熟悉,SQL 或者 MongoDB. 目录 在这个 app 中,所有 UI 都是用代码创建的,你可以在 1

  • iOS App中UIPickerView选择栏控件的使用实例解析

    UIPickerView控件是比UIDatePicker控件更普通的Picker控件,UIDatePicker控件可以理解成是从UIPickerView控件加工出来的专门进行日期选择的控件. UIPickerView控件的用法比UIDatePicker复杂一点.本文中的小例子将用UIPickerView控件做出两种效果,第一个只有一个转盘,第二个有两个转盘,但这两个转盘之间没有依赖关系,也就是说改变其中一个转盘中的选择,不会对第二个转盘产生影响.在下一篇文章会做一个转盘之间有依赖关系的例子. 下

  • iOS App开发中使用及自定义UITableViewCell的教程

    UITableView用来以表格的形式显示数据.关于UITableView,我们应该注意: (1)UITableView用来显示表格的可见部分,UITableViewCell用来显示表格的一行. (2)UITableView并不负责存储表格中的数据,而是仅仅存储足够的数据使得可以画出当前可见部分. (3)UITableView从UITableViewDelegate协议获取配置信息,从UITableViewDataSource协议获得数据信息. (4)所有的UITableView实现时实际上只有

  • iOS App开发中修改UILabel默认字体的方法

    在项目比较成熟的基础上,遇到了这样一个需求,应用中需要引入新的字体,需要更换所有Label的默认字体,但是同时,对于一些特殊设置了字体的label又不需要更换.乍看起来,这个问题确实十分棘手,首先项目比较大,一个一个设置所有使用到的label的font工作量是巨大的,并且在许多动态展示的界面中,可能会漏掉一些label,产生bug.其次,项目中的label来源并不唯一,有用代码创建的,有xib和storyBoard中的,这也将浪费很大的精力.这种情况下,我们可能会有下面两种处理方式. 一.普通方

  • iOS App中UITableView左滑出现删除按钮及其cell的重用

    UITableView的编辑模式 实现UITableView简单的删除功能(左滑出现删除按钮) 首先UITableView需要进入编辑模式.实现下面的方法,即使什么代码也不写也会进入编辑模式: 复制代码 代码如下: - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)index

随机推荐