iOS UISegmentedControl

SegmentedControl又被稱做分段控制器,是IOS開發中常常用到的一個UI控件。數組

初始化方法:傳入的數組能夠是字符串也能夠是UIImage對象的圖片數組app

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

設置控件風格:this

@property(nonatomic) UISegmentedControlStyle segmentedControlStyleatom

注意:這個屬性已經廢棄,再也不起任何做用,它的枚舉以下:code

typedef NS_ENUM(NSInteger, UISegmentedControlStyle) {
    UISegmentedControlStylePlain,     // large plain
    UISegmentedControlStyleBordered,  // large bordered
    UISegmentedControlStyleBar,       // small button/nav bar style. tintable
    UISegmentedControlStyleBezeled,   // DEPRECATED. Do not use this style.
} NS_DEPRECATED_IOS(2_0, 7_0, "The segmentedControlStyle property no longer has any effect");

設置是否保持選中狀態:對象

@property(nonatomic,getter=isMomentary) BOOL momentary;索引

注意:若是設置爲YES,點擊結束後,將不保持選中狀態,默認爲NO事件

獲取標籤個數:(只讀)圖片

@property(nonatomic,readonly) NSUInteger numberOfSegments;

設置標籤寬度是否隨內容自適應:

@property(nonatomic) BOOL apportionsSegmentWidthsByContent;

注意:若是設置爲NO,則全部標籤寬度一致,爲最大寬度。

插入文字標籤在index位置:

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

插入圖片標籤在index位置

- (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;
注意:若是設置爲0.0,則爲自適應,默認爲此設置。

根據索引獲取標籤寬度

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

設置和獲取當前選中的標籤索引

@property(nonatomic) NSInteger selectedSegmentIndex;

設置標籤風格顏色

@property(nonatomic,retain) UIColor *tintColor;

注意:這個風格顏色會影響標籤的文字和圖片

設置特定狀態下segment的背景圖案

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

注意:UIBarMetrics是一個枚舉,以下:(defaulf風格會充滿背景)

typedef NS_ENUM(NSInteger, UIBarMetrics) {
    UIBarMetricsDefault,
    UIBarMetricsCompact,
    UIBarMetricsDefaultPrompt = 101, // Applicable only in bars with the prompt property, such as UINavigationBar and UISearchBar
    UIBarMetricsCompactPrompt,

    UIBarMetricsLandscapePhone NS_ENUM_DEPRECATED_IOS(5_0, 8_0, "Use UIBarMetricsCompact instead") = UIBarMetricsCompact,
    UIBarMetricsLandscapePhonePrompt NS_ENUM_DEPRECATED_IOS(7_0, 8_0, "Use UIBarMetricsCompactPrompt") = UIBarMetricsCompactPrompt,
};

獲取背景圖案

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

經過Attribute字符串屬性字典設置標籤標題

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

獲取Attribute字符串屬性字典

- (NSDictionary *)titleTextAttributesForState:(UIControlState)state

自行設置標籤內容的偏移量

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

注意:UIOffset爲偏移量,這個結構體中又兩個浮點數,分別表示水平量和豎直量;UISegmentedControlSegment類型參數是一個枚舉,以下:

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

獲取自定義偏移量

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

添加點擊事件

[segmentedControl addTarget:self action:@selector(change:) forControlEvents:UIControlEventValueChanged];

專一技術,熱愛生活,交流技術,也作朋友。

——琿少 QQ羣:203317592

相關文章
相關標籤/搜索