iOS UISegmentedControl控制項詳解

來源:互聯網
上載者:User

標籤:

我們經常使用的一個控制項是Tab,這個控制項可以協助我們將App分為幾個模組,但是在一個介面內我們想要再進行細分怎麼辦呢?這時候就需要用到UISegmentedControl控制項了,這個控制項的用處就是進行分段控制,實現的樣式如下:

當選中一個分段的時候,其顏色填充,其餘分段為未選中狀態,可以很清晰明了地告知使用者當前在哪個分段內容下,也方便使用者切換。

具體的實現方式,還是先看代碼:

- (void)viewDidLoad {    [super viewDidLoad];    // 初始化,添加分段名,會自動布局    self.segmentedControl = [[UISegmentedControl alloc] initWithItems:@[@"正在銷售", @"已下架"]];    self.segmentedControl.frame = CGRectMake(-5, 50, SCREENWIDTH+10, 30);    // 設定整體的色調    self.segmentedControl.tintColor = cmGreen;    // 設定分段名的字型    NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:cmGreen,NSForegroundColorAttributeName,[UIFont systemFontOfSize:18],NSFontAttributeName ,nil];    [self.segmentedControl setTitleTextAttributes:dic forState:UIControlStateNormal];    // 設定初始選中項    self.segmentedControl.selectedSegmentIndex = 0;    [self.segmentedControl addTarget:self action:@selector(selectItem:) forControlEvents:UIControlEventValueChanged];// 添加回應程式法    // 設定樣式的segmentedControlStyle屬性在iOS 7.0之後將不再起作用    // 設定點擊後恢複原樣,預設為NO,點擊後一直保持選中狀態    self.segmentedControl.momentary = YES;    // 在指定序號處插入一個分段,會自動布局    [self.segmentedControl insertSegmentWithTitle:@"已刪除" atIndex:2 animated:NO];    // 在指定序號處移除一個分段,會自動布局    [self.segmentedControl removeSegmentAtIndex:2 animated:NO];    // 設定指定序號處的分段的寬度    [self.segmentedControl setWidth:50.0 forSegmentAtIndex:1];    // 擷取指定序號處標題的內容    NSLog(@"%@", [self.segmentedControl titleForSegmentAtIndex:1]);    // 擷取指定序號處標題的寬度    NSLog(@"%f", [self.segmentedControl widthForSegmentAtIndex:1]);    // 設定指定序號處的分段不可選    [self.segmentedControl setEnabled:NO forSegmentAtIndex:1];    [self.view addSubview:self.segmentedControl];}- (void)selectItem:(UISegmentedControl *)sender {    if (sender.selectedSegmentIndex == 0) {        NSLog(@"正在銷售");    } else {        NSLog(@"已下架");    }}

注釋已經都寫的比較清楚了,有幾個注意的地方特別提一下:

  • UISegmentedControl的風格在iOS 7.0之後就不能設定了,相應的屬性也進行了說明,即使設定了也是無效。
  • 其實UISegmentedControl的樣式時一個整體的圓角矩形,兩邊並不是像圖中那樣沒有左右兩邊的,但是我覺得四個圓角不太好看,所以用了一個小技巧,將其起始的x座標設為了-5,將其寬度設為了螢幕寬度+10,這樣左右的圓角就隱藏起來了,看上去覺得要美觀一些,我嘗試過用layer來將角度調整為0,不起作用。
  • 字型不能直接設定,只能像代碼中一樣建立一個字典來設定。
  • 喚起回應程式法的動作是UIControlEventValueChanged,是改變值的響應,而不是按鈕那種TouchUpside。
  • 分段的標題可以用文字(我這裡都是文字)也可以用圖片,基本都有對應的方法,可以在使用的時候根據代碼補全提示去找。
  • 初始化的時候如果沒有設定初始的分段標題,而是用initWithFram來初始化的話,我嘗試在後面用insertSegmentWithTitle來添加標題,不起作用。

這就是我的一點粗淺研究啦,可以在Github下載我的樣本工程

著作權:http://blog.csdn.net/cloudox_

iOS UISegmentedControl控制項詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.