分段控件: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.设置标签内容数组(一个为字符串数组、一个为图像数组)

     //设置标签单元数组,内容全为文字
NSArray *items = @[@"图片",@"视频",@"音乐",@"美食"];
     //设置标签单元数组,内容全为图像
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(, , , );

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

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

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

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

//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

输出结果:

-- ::51.026 分段控件UISegmentedControl[:] sender: 

当用图像数组初始化时 :

iOS:分段控件UISegmentedControl的详细使用的更多相关文章

  1. iOS在导航栏上居中显示分段控件(UISegmentedControl)

    UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:nil]; segmentedCont ...

  2. 使用开关、分段控件和web视图

    #import "XViewController.h" @interface XViewController () @end @implementation XViewContro ...

  3. 【UISegmentedControl】-  分段控件

    一.初始化 二.常见的属性 1.segmentedControlStyle属性:设置基本的样式 2.momentary属性:设置在点击后是否恢复原样 . 3.numberOfSegments属性:只读 ...

  4. iOS系列 基础篇 09 开关、滑块和分段控件

    iOS系列 基础篇 09 开关.滑块和分段控件 目录: 案例说明 开关控件Switch 滑块控件Slider 分段控件Segmented Control 1. 案例说明 开关控件(Switch).滑块 ...

  5. UISegmentedControl——分段控件

    分段控件,提供了一组按钮,但是只能激活一个.通过UIControlEventValueChanged事件实现与用户的交互,并通过selectedSegmentIndex判断当前选定的控件,通过titl ...

  6. iOS开发基础控件--UISegmentedControl

    UISegmentedControl全局外观设置 分段控件是我们常用的控件之一,今天把具体用法总结了下: 1.初始化UISegmentedControl [plain] view plaincopy ...

  7. JS调用Android、Ios原生控件

    在上一篇博客中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时, ...

  8. 79.iOS 设备的UI规范和iOS各控件默认高度

    iOS设备的UI 规范 iPhone界面尺寸 iPhone图标尺寸 iPad的设计尺寸 iPad图标尺寸 iPhone设备尺寸分辨率比例 iPhone各设备 launch image iOS 各种控件 ...

  9. [Swift通天遁地]九、拔剑吧-(4)使用开源类库创建可滑动的Segment分段控件

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

随机推荐

  1. 字符串aaaa......bbbb....ccc...dddddd用正则替换为abcd

    public static void main(String[] args) { String s = "aaaa......bbbb....ccc...dddddd"; Stri ...

  2. linux命令(29):cd命令

    例1:进入系统根目录 cd  / cd ../.. // [直接退到当前根目录] 例2:使用 cd 命令进入当前用户主目录 cd 例3:跳转到指定目录 cd  /home/test 例4:返回进入此目 ...

  3. LeetCode解题报告—— Longest Valid Parentheses

    Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ...

  4. 《java并发编程实战》读书笔记11--构建自定义的同步工具,条件队列,Condition,AQS

    第14章 构建自定义的同步工具 本章将介绍实现状态依赖性的各种选择,以及在使用平台提供的状态依赖机制时需要遵守的各项规则. 14.1 状态依赖性的管理 对于并发对象上依赖状态的方法,虽然有时候在前提条 ...

  5. CSAPP lab1 datalab-handout(深入了解计算机系统 实验一)

    主要涉及计算机中数的表示法: (1)整数: two's complement,即补码表示法 假设用N位bit表示整数w: 其中最左边一位为符号位,符号位为0,表示正数,为1表示负数. (2)浮点数: ...

  6. [BZOJ4456] [Zjoi2016]旅行者 分治+最短路

    4456: [Zjoi2016]旅行者 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 777  Solved: 439[Submit][Status] ...

  7. vs2005 QT4.7.1编译 详细

    http://blog.csdn.net/debugconsole/article/details/8230683 网上一搜有QT+2005编译的很多文章,但是都不详细,很多都编不过,特别的在conf ...

  8. AndroidManifest.xml文件详解(meta-data)

    http://blog.csdn.net/think_soft/article/details/7567189 语法(SYNTAX): <meta-dataandroid:name=" ...

  9. win7家庭版如何获得管理员权限?

    1.首先,打开你的命令提示符,输入cmd.有一点非常重要,如图所示,我们必须“以管理员的方式打开”.只有以管理员身份打开,那么接下来要敲打的命令才会成功. 2. 打开命令提示符后,在输入框输入net ...

  10. Xamarin中VS无法连接Mac系统的解决办法

    Xamarin中VS无法连接Mac系统的解决办法 按照以下步骤排查:(1)确认Mac系统中安装Xamarin.iOS开发必备的组件,如Mono.Xamarin.iOS.(2)将Windows和Mac下 ...