UISegmentedControl

一、簡介
<<分段控件提供一欄按鈕(有時稱為按鈕欄),但只能激活其中一個按鈕。分段控件會導(dǎo)致用戶在屏幕上看到的內(nèi)容發(fā)生變化。它們常用于在不同類別的信息之間選擇,或在不同的應(yīng)用屏幕之間切換

<<繼承關(guān)系:UISegmentedControl-->UIControl-->UIView-->UIResponder-->NSObject

格式為

1-->初始化(作用)

typedef enum {
UISegmentedControlStylePlain, // large plain 有灰邊的大白按鈕,適合偏好設(shè)置單元
UISegmentedControlStyleBordered, // large bordered 黑邊的大白按鈕,適用于表格單元
UISegmentedControlStyleBar, // small button/nav bar style. tintable 小按鈕,適合導(dǎo)航欄
UISegmentedControlStyleBezeled, // large bezeled style. tintable
} UISegmentedControlStyle;(如果屬性有枚舉類型的話,這里會有枚舉類型說明)

mySegmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;//風(fēng)格 (這是具體的例子)

@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. 控件的大小會自動調(diào)整為適合的內(nèi)容。

2-->設(shè)置UISegmentedControl的風(fēng)格

typedef enum {
UISegmentedControlStylePlain, // large plain 有灰邊的大白按鈕,適合偏好設(shè)置單元
UISegmentedControlStyleBordered, // large bordered 黑邊的大白按鈕,適用于表格單元
UISegmentedControlStyleBar, // small button/nav bar style. tintable 小按鈕,適合導(dǎo)航欄
UISegmentedControlStyleBezeled, // large bezeled style. tintable
} UISegmentedControlStyle;

mySegmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;//風(fēng)格

@property(nonatomic) UISegmentedControlStyle segmentedControlStyle NS_DEPRECATED_IOS(2_0, 7_0, "The segmentedControlStyle property no longer has any effect") __TVOS_PROHIBITED;//廢棄屬性

3-->設(shè)置在點擊后是否恢復(fù)原樣

mySegmentedControl.momentary = YES;

@property(nonatomic,getter=isMomentary) BOOL momentary; //如果設(shè)置,則在跟蹤結(jié)束后,我們不會繼續(xù)顯示選定的狀態(tài)。默認(rèn)是 NO

4-->獲取總選項數(shù)

[segment numberOfSegments];//得到segment的數(shù)量

@property(nonatomic,readonly) NSUInteger numberOfSegments;

5-->是否根據(jù)segment的內(nèi)容改變segment的寬度

segment.apportionsSegmentWidthsByContent = YES;

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

6-->在指定索引插入一個選項并設(shè)置題目

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

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

7-->在指定索引插入一個選項并設(shè)置圖片

[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-->設(shè)置指定索引的題目

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

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

11-->獲取指定索引選項的標(biāo)題

NSString* myTitle = [mySegmentedControl titleForSegmentAtIndex:1];

-(nullable NSString *)titleForSegmentAtIndex:(NSUInteger)segment;
12-->設(shè)置指定索引的圖片

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-->設(shè)置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-->設(shè)置內(nèi)容偏移

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

-(void)setContentOffset:(CGSize)offset forSegmentAtIndex:(NSUInteger)segment;
17-->獲取內(nèi)容偏移

CGSize size = [mySegmentedControl contentOffsetForSegmentAtIndex:2];

-(CGSize)contentOffsetForSegmentAtIndex:(NSUInteger)segment;
18-->設(shè)置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-->設(shè)置默認(rèn)選擇項索引

segmentedControl.selectedSegmentIndex = 2;

@property(nonatomic) NSInteger selectedSegmentIndex;

21-->設(shè)置segments的顏色

segmentedControl.tintColor = [UIColor redColor];

@property(null_resettable,nonatomic,strong) UIColor *tintColor;
22-->設(shè)置背景圖

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-->設(shè)置標(biāo)簽之間分割線的圖案

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-->獲取標(biāo)簽之間分割線的圖案

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字符串屬性字典設(shè)置標(biāo)簽標(biāo)題

[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-->設(shè)置標(biāo)簽內(nèi)容的偏移量

typedef NS_ENUM(NSInteger, UISegmentedControlSegment) {
UISegmentedControlSegmentAny = 0,//所有標(biāo)簽都受影響
UISegmentedControlSegmentLeft = 1, //只有左邊部分受到影響
UISegmentedControlSegmentCenter = 2, // 只有中間部分受到影響
UISegmentedControlSegmentRight = 3, // 只有右邊部分受到影響
UISegmentedControlSegmentAlone = 4, // 在只有一個標(biāo)簽的時候生效
};

[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;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 創(chuàng)建 增、刪選項 獲取選項個數(shù) (只讀) 樣式 設(shè)置元素的色調(diào) 背景圖片 通過序號設(shè)置被選中的選項 是否有選中的狀...
    JerryLMJ閱讀 10,350評論 2 7
  • UISegmentControl分段控制器是UIKit框架提供的一組按鈕欄,提供多個可選的按鈕,只能激活其中的一個...
    pican閱讀 5,754評論 0 7
  • 一、簡介 <<繼承關(guān)系:UISearchBar-->UIView-->UIResponder-->NSObject...
    無邪8閱讀 1,386評論 0 1
  • 初始化的方法 //一次性初始化多個control,items可以是圖片或者是文字array,系統(tǒng)會自動控制每個單元...
    c_xiaoqiang閱讀 27,897評論 6 44
  • // //UIView.h //UIKit // //Copyright (c) 2005-2015 Apple ...
    李某lkb閱讀 1,873評論 0 0

友情鏈接更多精彩內(nèi)容