Недавно я добавил сегментированный элемент управления в заголовок раздела моего табличного представления, все работает нормально, но он неправильно меняет размер .. Я хочу применить некоторый запас, но если я установил рамку, это не повлияет на размер сегментированный контроль? Что я делаю не так? вот мой код:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    if(section == 0) {
        UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:@[@"Segment 1", @"Segment 2",@"Segment 3"]];
        segmentedControl.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.95];
        [segmentedControl setFrame:CGRectMake(10, 0, self.view.bounds.size.width-10, self.view.bounds.size.height)];

        return segmentedControl;
    }
    return nil;
}

enter image description here

1
Sebastian Boldt 24 Дек 2014 в 23:08

2 ответа

Лучший ответ

Вы возвращаете экземпляр UISegmentedControl, и по очевидным причинам вы не можете многое настроить внутри элемента управления. Вместо этого попробуйте создать UIView как представление заголовка и добавить сегментированный элемент управления внутри как подпредставление. Таким образом, вы сможете легко настроить положение сегментированного элемента управления внутри этого представления контейнера.

2
sha 24 Дек 2014 в 20:58
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {

    if(section == 0) {

        UIView * viewHeader = [[UIView alloc]initWithFrame:CGRectMake(10, 0, self.view.bounds.size.width-10, self.view.bounds.size.height)];
        [viewHeader setBackgroundColor:[UIColor clearColor]];

        UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:@[@"Segment 1", @"Segment 2",@"Segment 3"]];
        segmentedControl.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.95];
        [segmentedControl setFrame:CGRectMake(10, 0, viewHeader.frame.size.width , viewHeader.frame.size.height)];
        viewHeader addSubview:segmentedControl

        return viewHeader;
    }
    return nil;
}
5
Abhishek Sharma 25 Дек 2014 в 04:37