分段控制器--UISegmentedControl 基本用法


http://blog.csdn.net/heng615975867/article/details/43527295

http://blog.csdn.net/gf771115/article/details/7683565

 

UISegmentedControl分段控件代替了桌面OS上的單選按鈕。不過它的選項個數非常有限,因為你的IOS設備屏幕有限。當我們需要使用選項非常少的單選按鈕時它很合適。

 一:創建一個SegmentControl

    //先創建一個數組用於設置標題
    NSArray *arr = [[NSArray alloc]initWithObjects:@"輕拍",@"長按",@"清掃",@"旋轉",@"捏合",@"拖拽", nil];
    
    //初始化UISegmentedControl
    //在沒有設置[segment setApportionsSegmentWidthsByContent:YES]時,每個的寬度按segment的寬度平分
    UISegmentedControl *segment = [[UISegmentedControl alloc]initWithItems:arr];
    
    //設置frame
    segment.frame = CGRectMake(0, 400, self.view.frame.size.width, 40);
    
    //管理Segment的內容
    //設置下標為3的segment的標題 下標以0開始 iOS里的所有下標都是以0開始
    [segment setTitle:@"大便" forSegmentAtIndex:3];
    
    //設置下標為4的segment的圖片
    [segment setImage:[UIImage imageNamed:@"maopiao"] forSegmentAtIndex:4];
    
    //添加到主視圖
    [self.view addSubview:segment];

運行如圖:    

    

二:添加/刪除分頁Segments  

    [segment insertSegmentWithImage:[UIImage imageNamed:@"3"] atIndex:2 animated:YES]; //添加分頁,並設置圖片
    [segment insertSegmentWithTitle:@"ddd" atIndex:0 animated:YES];//添加分頁,並設置標題
    [segment numberOfSegments];//得到segment的數量
    [segment removeAllSegments];//移出所有segment
    [segment removeSegmentAtIndex:2 animated:YES];//移出下標為2的segment
    segment.selectedSegmentIndex = 0;//選中第幾個segment 一般用於初始化時選中

三:管理Segment的行為和外觀   

    //默認為NO 當設置為YES時,當被選中后,一會兒后不顯示被選中狀態(最左邊的樣子),不選中狀態即下圖的右邊幾個按鈕一樣
    segment.momentary = YES;

    

 

  //設置segment的外觀和字體顏色
    segment.tintColor = [UIColor redColor];
    //segment.segmentedControlStyle = UISegmentedControlStyleBar;此屬性在ios7之后不再有任何效果
    
    [segment setEnabled:NO]; //設置segment是否可用 此方法是其父類UIControl的方法
    [segment setEnabled:NO forSegmentAtIndex:2];//設置下標為2的segment不可用
    [segment setWidth:100 forSegmentAtIndex:2]; //這時下表為2的segment的寬度
    [segment setContentOffset:CGSizeMake(10, 10) forSegmentAtIndex:2];//設置內容偏移
    segment.apportionsSegmentWidthsByContent = YES; //是否根據segment的內容改變segment的寬度

    

 

    //設置設置豎屏狀態下segments的背景圖片
    [segment setBackgroundImage:[UIImage imageNamed:@"yellow"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

typedef enum {
    UIBarMetricsDefault,  //豎屏
    UIBarMetricsLandscapePhone,  橫屏
} UIBarMetrics;

 

    //設置Segment的字體
    NSDictionary *dic = @{
                          //1.設置字體樣式:例如黑體,和字體大小
                          NSFontAttributeName:[UIFont fontWithName:@"Arial-BoldMT" size:20],
                          //2.字體顏色
                          NSForegroundColorAttributeName:[UIColor grayColor]
                          };
    
    [segment setTitleTextAttributes:dic forState:UIControlStateNormal];

    

 

//當選中不同的segment時,

//當選中不同的segment時,會觸發不同的點擊事件
[segment addTarget:self action:@selector(selected:) forControlEvents:UIControlEventValueChanged];
    

-(void)selected:(id)sender{
    UISegmentedControl* control = (UISegmentedControl*)sender;
    switch (control.selectedSegmentIndex) {
        case 0:
            NSLog(@"0");
            break;
        case 1:
            NSLog(@"1");
            break;
        case 2:
            NSLog(@"2");
            break;
            
        default:
            NSLog(@"3");
            break;
    }
}

 

 

可以視使用的場合,有三種風格選擇,如下:

  1. typedef enum {  
  2.     UISegmentedControlStylePlain,     // large plain 有灰邊的大白按鈕,適合偏好設置單元   
  3.     UISegmentedControlStyleBordered,  // large bordered 黑邊的大白按鈕,適用於表格單元   
  4.     UISegmentedControlStyleBar,       // small button/nav bar style. tintable 小按鈕,適合導航欄   
  5.     UISegmentedControlStyleBezeled,   // large bezeled style. tintable   
  6. } UISegmentedControlStyle;  

如果你使用的是 UISegmentedControlStyleBar 風格,還可以用空間的 tintColor 屬性為整個控件設置渲染色彩:

  1. UIColor *myTint = [[ UIColor alloc]initWithRed:0.66 green:1.0 blue:0.77 alpha:1.0];  
  2.    mySegmentedControl.tintColor = myTint;  

注意:開啟這個功能后點觸片段不會更新 selectedSegmentedIndex,因此也就無法通過這個屬性得到當前選取的片段。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM