UISegmentedControl

一、简介
<<分段控件提供一栏按钮(有时称为按钮栏),但只能激活其中一个按钮。分段控件会导致用户在屏幕上看到的内容发生变化。它们常用于在不同类别的信息之间选择,或在不同的应用屏幕之间切换

<<继承关系:UISegmentedControl-->UIControl-->UIView-->UIResponder-->NSObject

格式为

1-->初始化(作用)

typedef enum {
UISegmentedControlStylePlain, // large plain 有灰边的大白按钮,适合偏好设置单元
UISegmentedControlStyleBordered, // large bordered 黑边的大白按钮,适用于表格单元
UISegmentedControlStyleBar, // small button/nav bar style. tintable 小按钮,适合导航栏
UISegmentedControlStyleBezeled, // large bezeled style. tintable
} UISegmentedControlStyle;(如果属性有枚举类型的话,这里会有枚举类型说明)

mySegmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;//风格 (这是具体的例子)

@property(nonatomic) UISegmentedControlStyle segmentedControlStyle NS_DEPRECATED_IOS(2_0, 7_0, "The segmentedControlStyle property no longer has any effect") __TVOS_PROHIBITED;//废弃属性 (这是说明)

二、UISegmentedControl的属性(属性的顺序与苹果API一致)

1--> 初始化方法

NSArray *array = [NSArray arrayWithObjects:@"家具",@"灯饰",@"建材",@"装饰", nil];
UISegmentedControl *segment =[[UISegmentedControl alloc]initWithItems:array];

-(instancetype)initWithItems:(nullable NSArray *)items; // items 可以是 NSStrings or UIImages. 控件的大小会自动调整为适合的内容。

2-->设置UISegmentedControl的风格

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

mySegmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;//风格

@property(nonatomic) UISegmentedControlStyle segmentedControlStyle NS_DEPRECATED_IOS(2_0, 7_0, "The segmentedControlStyle property no longer has any effect") __TVOS_PROHIBITED;//废弃属性

3-->设置在点击后是否恢复原样

mySegmentedControl.momentary = YES;

@property(nonatomic,getter=isMomentary) BOOL momentary; //如果设置,则在跟踪结束后,我们不会继续显示选定的状态。默认是 NO

4-->获取总选项数

[segment numberOfSegments];//得到segment的数量

@property(nonatomic,readonly) NSUInteger numberOfSegments;

5-->是否根据segment的内容改变segment的宽度

segment.apportionsSegmentWidthsByContent = YES;

@property(nonatomic) BOOL apportionsSegmentWidthsByContent NS_AVAILABLE_IOS(5_0);

6-->在指定索引插入一个选项并设置题目

[segmentedControl insertSegmentWithTitle:@"insert" atIndex:3 animated:NO];

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

7-->在指定索引插入一个选项并设置图片

[segmentedControl insertSegmentWithImage:[UIImage imageNamed:@"mei.png"] atIndex:2 animated:NO];

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

8-->移除指定索引的选项

[segmentedControl removeSegmentAtIndex:0 animated:NO];

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

9-->移出所有segment

[segment removeAllSegments];

-(void)removeAllSegments;

10-->设置指定索引的题目

[segmentedControl setTitle:@"two" forSegmentAtIndex:1];

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

11-->获取指定索引选项的标题

NSString* myTitle = [mySegmentedControl titleForSegmentAtIndex:1];

-(nullable NSString *)titleForSegmentAtIndex:(NSUInteger)segment;
12-->设置指定索引的图片

segmentedControl setImage:[UIImage imageNamed:@"btn_jyy.png"] forSegmentAtIndex:3];

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

13-->获取指定索引选项的图片

UIImage* myImage = [mySegmentedControl imageForSegmentAtIndex:2];

-(nullable UIImage *)imageForSegmentAtIndex:(NSUInteger)segment;
14-->设置Item的宽度

[segmentedControl setWidth:70.0 forSegmentAtIndex:2];

-(void)setWidth:(CGFloat)width forSegmentAtIndex:(NSUInteger)segment;
15-->获取指定索引选项的宽度

CGFloat float =[segmentedControl widthForSegmentAtIndex:2];

-(CGFloat)widthForSegmentAtIndex:(NSUInteger)segment;
16-->设置内容偏移

[segment setContentOffset:CGSizeMake(10, 10) forSegmentAtIndex:2];

-(void)setContentOffset:(CGSize)offset forSegmentAtIndex:(NSUInteger)segment;
17-->获取内容偏移

CGSize size = [mySegmentedControl contentOffsetForSegmentAtIndex:2];

-(CGSize)contentOffsetForSegmentAtIndex:(NSUInteger)segment;
18-->设置segment是否可用

[segmentedControl setEnabled:NO forSegmentAtIndex:4];

-(void)setEnabled:(BOOL)enabled forSegmentAtIndex:(NSUInteger)segment; // default is YES

19-->判断指定索引选项是否可选

BOOL enableFlag = [segmentedControl isEnabledForSegmentAtIndex:4];

-(BOOL)isEnabledForSegmentAtIndex:(NSUInteger)segment;

20-->设置默认选择项索引

segmentedControl.selectedSegmentIndex = 2;

@property(nonatomic) NSInteger selectedSegmentIndex;

21-->设置segments的颜色

segmentedControl.tintColor = [UIColor redColor];

@property(null_resettable,nonatomic,strong) UIColor *tintColor;
22-->设置背景图

typedef enum {
UIBarMetricsDefault, //竖屏
UIBarMetricsLandscapePhone, 横屏
} UIBarMetrics;

[segment setBackgroundImage:[UIImage imageNamed:@""] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

-(void)setBackgroundImage:(nullable UIImage *)backgroundImage forState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;

23-->获取背景图

UIImage* myImage = [mySegmentedControl backgroundImageForState: UIControlStateNormal barMetrics: UIBarMetricsDefault];

-(nullable UIImage *)backgroundImageForState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;
24-->设置标签之间分割线的图案

typedef enum {
UIBarMetricsDefault, //竖屏
UIBarMetricsLandscapePhone, 横屏
} UIBarMetrics;

[segment setDividerImage:[UIImage imageNamed:@"234"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

-(void)setDividerImage:(nullable UIImage *)dividerImage forLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState barMetrics:(UIBarMetrics)barMetrics NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;

25-->获取标签之间分割线的图案

UIImage* myImage = [mySegmentedControl dividerImageForLeftSegmentState: UIControlStateNormal
rightSegmentState: UIControlStateNormal
barMetrics: UIBarMetricsDefault];

-(nullable UIImage *)dividerImageForLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState barMetrics:(UIBarMetrics)barMetrics NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;
26-->通过Attribute字符串属性字典设置标签标题

[segC setTitleTextAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:18],NSForegroundColorAttributeName:[UIColor redColor]} forState:UIControlStateNormal];

-(void)setTitleTextAttributes:(nullable NSDictionary *)attributes forState:(UIControlState)state NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;
27-->获取Attribute字符串属性字典

NSDictionary *dic=[segmentedControl titleTextAttributesForState: UIControlStateNormal];

-(nullable NSDictionary *)titleTextAttributesForState:(UIControlState)state NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;

28-->设置标签内容的偏移量

typedef NS_ENUM(NSInteger, UISegmentedControlSegment) {
UISegmentedControlSegmentAny = 0,//所有标签都受影响
UISegmentedControlSegmentLeft = 1, //只有左边部分受到影响
UISegmentedControlSegmentCenter = 2, // 只有中间部分受到影响
UISegmentedControlSegmentRight = 3, // 只有右边部分受到影响
UISegmentedControlSegmentAlone = 4, // 在只有一个标签的时候生效
};

[segC setContentPositionAdjustment:UIOffsetMake(0, -60) forSegmentType: UISegmentedControlSegmentAlone
barMetrics: UIBarMetricsDefault];

-(void)setContentPositionAdjustment:(UIOffset)adjustment forSegmentType:(UISegmentedControlSegment)leftCenterRightOrAlone barMetrics:(UIBarMetrics)barMetrics NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;
29-->获取自定义偏移量

UIOffset offset= [segC s contentPositionAdjustmentForSegmentType: : UISegmentedControlSegmentAlone
barMetrics: UIBarMetricsDefault];

-(UIOffset)contentPositionAdjustmentForSegmentType:(UISegmentedControlSegment)leftCenterRightOrAlone barMetrics:(UIBarMetrics)barMetrics NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • 创建 增、删选项 获取选项个数 (只读) 样式 设置元素的色调 背景图片 通过序号设置被选中的选项 是否有选中的状...
    JerryLMJ阅读 10,085评论 2 7
  • UISegmentControl分段控制器是UIKit框架提供的一组按钮栏,提供多个可选的按钮,只能激活其中的一个...
    pican阅读 5,493评论 0 7
  • 一、简介 <<继承关系:UISearchBar-->UIView-->UIResponder-->NSObject...
    无邪8阅读 1,321评论 0 1
  • 初始化的方法 //一次性初始化多个control,items可以是图片或者是文字array,系统会自动控制每个单元...
    c_xiaoqiang阅读 27,756评论 6 44
  • // //UIView.h //UIKit // //Copyright (c) 2005-2015 Apple ...
    李某lkb阅读 1,698评论 0 0