iOS:分段控件UISegmentedControl的详细使用

简介:

分段控件:UISegmentedControl

 
功能:分段的控制、页面的切换等。
 
介绍:当用户输入不仅仅是布尔值时,可使用分段控件(UISegmentedControl)。分段控件提供一栏按钮(有时称为按钮栏),但只能激活其中一个按钮。分段控件会导致用户在屏幕上看到的内容发生变化。它们常用于在不同类别的信息之间选择,或在不同的应用屏幕之间切换。下面介绍基本属性和基本方法的使用。继承自UIControl。
 
类型:

typedef NS_ENUM(NSInteger, UISegmentedControlStyle) {

    UISegmentedControlStylePlain,                 // 有灰色的大白按钮,适合偏好设置单元

    UISegmentedControlStyleBordered,           // 黑色边界的大白按钮,适用于表格单元

    UISegmentedControlStyleBar,                  // 小按钮,适合导航栏

    UISegmentedControlStyleBezeled,            //斜角/斜边按钮 

}

enum {

       UISegmentedControlNoSegment = -1        // 不进行分段

};

typedef NS_ENUM(NSInteger, UISegmentedControlSegment) {

    UISegmentedControlSegmentAny = 0,           //所有标签都受影响

    UISegmentedControlSegmentLeft = 1,          //只有左边部分受到影响

    UISegmentedControlSegmentCenter = 2,      //只有中间部分受到影响

    UISegmentedControlSegmentRight = 3,        //只有右边部分受到影响

    UISegmentedControlSegmentAlone = 4,        //在只有一个标签时生效

};

属性:

@property(nonatomic) UISegmentedControlStyle segmentedControlStyle;  //分段控件类型

 

@property(nonatomic,getter=isMomentary) BOOL momentary;                //是否保持选中状态

 

@property(nonatomic,readonly) NSUInteger numberOfSegments;       //标签数量

 

@property(nonatomic) BOOL apportionsSegmentWidthsByContent ;  //设置标签宽度是否随内容自适应

 

@property(nonatomic) NSInteger selected ;            //被选中的标签的索引

 

@property(nonatomic,retain) UIColor *tintColor;     //控件颜色

 

方法:

※初始化方法:传入的数组内容可以是字符串也可以是图像

- (instancetype)initWithItems:(NSArray *)items; 

 

※在指定索引处插入标签标题

- (void)insertSegmentWithTitle:(NSString *)title atIndex:(NSUInteger)segment animated:(BOOL)animated; 

 

※在指定索引处插入标签图像

- (void)insertSegmentWithImage:(UIImage *)image  atIndex:(NSUInteger)segment animated:(BOOL)animated;

 

※移除指定索引处的标签

- (void)removeSegmentAtIndex:(NSUInteger)segment animated:(BOOL)animated;

 

※移除所有的标签

- (void)removeAllSegments;

 

※设置指定索引处的标签标题

- (void)setTitle:(NSString *)title forSegmentAtIndex:(NSUInteger)segment; 

 

※获取指定索引处的标签标题

- (NSString *)titleForSegmentAtIndex:(NSUInteger)segment;

 

※设置指定索引处的标签图像

- (void)setImage:(UIImage *)image forSegmentAtIndex:(NSUInteger)segment; 

 

※获取指定索引处的标签图像     

- (UIImage *)imageForSegmentAtIndex:(NSUInteger)segment;

 

※设置指定索引处标签的宽度

- (void)setWidth:(CGFloat)width forSegmentAtIndex:(NSUInteger)segment;

 

※ 获取指定索引处的标签的宽度       

- (CGFloat)widthForSegmentAtIndex:(NSUInteger)segment;

 

※设置指定索引处标签内容偏移量

- (void)setContentOffset:(CGSize)offset forSegmentAtIndex:(NSUInteger)segment; 

 

※获取指定索引处标签内容的偏移量

- (CGSize)contentOffsetForSegmentAtIndex:(NSUInteger)segment;

 

※设置指定索引处标签是否有效(默认有效)

- (void)setEnabled:(BOOL)enabled forSegmentAtIndex:(NSUInteger)segment;  

 

※获取指定索引处的标签的有效性

(BOOL)isEnabledForSegmentAtIndex:(NSUInteger)segment;

 

※设置设定状态下segment的背景图像

- (void)setBackgroundImage:(UIImage *)backgroundImage forState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics; 

 

※获取设定的状态下的segment的背景图像

- (UIImage *)backgroundImageForState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics ;

 

※设置标签之间分割线的图像

- (void)setDividerImage:(UIImage *)dividerImage forLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState barMetrics:(UIBarMetrics) barMetrics ;

 

※获取标签之间分割线的图像

- (UIImage *)dividerImageForLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState barMetrics:(UIBarMetrics)barMetrics ;

 

※通过attributes字典设置设定的状态下标签的标题

- (void)setTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state ;

 

※获取attributes字典

- (NSDictionary *)titleTextAttributesForState:(UIControlState)state;

 

※自行设置标签内容的偏移量

- (void)setContentPositionAdjustment:(UIOffset)adjustment forSegmentType:(UISegmentedControlSegment)leftCenterRightOrAlone barMetrics:(UIBarMetrics)barMetrics ; 

 

※获取自定义的标签内容偏移量

- (UIOffset)contentPositionAdjustmentForSegmentType:(UISegmentedControlSegment)leftCenterRightOrAlone barMetrics:(UIBarMetrics)barMetrics ;

 

 具体举例:在ViewController类的- (void)viewDidLoad { [super viewDidLoad];...}方法中添加代码如下:

//1.设置标签内容数组(一个为字符串数组、一个为图像数组)

1     //设置标签单元数组,内容全为文字
2     NSArray *items = @[@"图片",@"视频",@"音乐",@"美食"];
1     //设置标签单元数组,内容全为图像
2     NSArray *images = @[[UIImage imageNamed:@"1.png"],[UIImage imageNamed:@"2.png"],[UIImage imageNamed:@"3.png"]];

//2、创建分段控件实例并设置位置frame

复制代码
//创建分段控件实例
UISegmentedControl *sc = [[UISegmentedControl alloc]initWithItems:items]; //用文字数组初始化

//UISegmentedControl *sc = [[UISegmentedControl alloc]initWithItems:images]; //用图像数组初始化
//设置位置 sc.frame = CGRectMake(60, 120, 200, 50);
复制代码

//3、设置风格(注意:版本升级后,该属性不在有效)

    //设置风格(iOS7.0以后,这个属性不在起任何作用了)
    //sc.segmentedControlStyle = UISegmentedControlStyleBordered;

//4、设置一开始就选中的标签

    //设置选中的标签
    sc.selectedSegmentIndex = 2;

//5、添加控件事件

    //添加控件事件
    [sc addTarget:self action:@selector(segmentedChanged:) forControlEvents:UIControlEventValueChanged];

//6、将控件加到视图中

    //将控件添加到视图中
    [self.view addSubview:sc];

 触发控件事件:

#pragma mark -segmentedChanged: 触发控件事件

-(void)segmentedChanged:(UISegmentedControl*)sender
{
    NSLog(@"sender: %ld",sender.selectedSegmentIndex); //输出当前的索引值
}

 

演示结果如下:

 当用字符串文字数组初始化,并且没有触发事件时:当前选中的索引是2

     

当触发事件时,当前选中的索引是:0

    

输出结果:     

2015-09-30 23:07:51.026 分段控件UISegmentedControl[5335:319520] sender: 0

 

 当用图像数组初始化时 :

 

 

 

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
分类:  iOS初级

本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/4850529.html,如需转载请自行联系原作者
相关文章
|
iOS开发
iOS 多个滚动控件嵌套Demo
iOS 多个滚动控件嵌套Demo
71 0
|
iOS开发
iOS 常用的 上下左右 拉刷新控件
iOS 常用的 上下左右 拉刷新控件
106 0
|
iOS开发
iOS短信验证码控件,自动输入回调两次解决办法
iOS短信验证码控件,自动输入回调两次解决办法
483 0
|
iOS开发
IOS的UITableView控件简单使用
IOS的UITableView控件简单使用
160 0
|
iOS开发
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
150 0
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
|
安全 iOS开发
iOS小技能:下拉刷新控件的适配
1. 下拉顶部背景色设置: 往tableView的父控件添加拉伸背景视图 2. present 半屏适配 iOS13 modalPresentationStyle属性默认不是全屏样式`UIModalPresentationFullScreen`,而是半屏样式,需要根据需求手动设置。 present 半屏,会导致列表下拉刷新失效。
209 0
iOS小技能:下拉刷新控件的适配
|
iOS开发
iOS小技能:自动布局实现兄弟控件N等分且宽高比例是1:N(xib 上实现)
本文为 iOS视图约束专题的第三篇:xib上使用自动布局教程
182 0
|
存储 前端开发 程序员
iOS开发:实现点击常用控件弹出地区选择框(万能方法)
在iOS开发中会遇到一些选择选项的需求,而且点击一个控件弹出一个选择框,选择之后展示到前端,然后再把选择的内容传给后台或者做本地存储。这个需求对于大多数开发者来说可以为小儿科,但是作为一个爱记录的程序猿来说相当可贵,所以还是那句话,只分享给有缘人,大牛可以飘过,不喜勿喷请走开。
438 0
iOS开发:实现点击常用控件弹出地区选择框(万能方法)
|
数据可视化 程序员 iOS开发
iOS开发:用XIB拖控件关联时报错:“Could not insert new outlet connection…”解决方法
在iOS开发过程中,尤其是iOS开发初期,会遇到各种各样的错误,有些错误是开发者的不熟悉或者疏忽大意造成的,还有些是无厘头的错误,可以通过重启Xcode或者重启电脑就可解决。
279 0
iOS开发:用XIB拖控件关联时报错:“Could not insert new outlet connection…”解决方法
|
iOS开发
iOS开发-加在透明视图上的控件会透明
iOS开发-加在透明视图上的控件会透明
139 0