我正在尝试将分段控件添加到tableviewheader。我使用以下代码来做到这一点
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc]initWithItems:[NSArray arrayWithObjects:@"ALL", @"HOUSE", @"SENATE", nil]];
segmentedControl.frame = CGRectMake(24, 0, 272, 30);
[segmentedControl addTarget:self action:@selector(segmentedControlHasChangedValue:) forControlEvents:UIControlEventValueChanged];
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
segmentedControl.tintColor = [UIColor grayColor];
[self.view addSubview:segmentedControl];
segmentedControl.selectedSegmentIndex = 0;
self.tableView.tableHeaderView = segmentedControl;
我无法设置框架,无论它的值是什么,它总是100%宽。如何设置左右加上24px的边距?
答案 0 :(得分:1)
这是因为您将段控件用作tableHeaderView。 UITableViewHeaderView将始终与tableView一样宽。你只能改变高度。
答案 1 :(得分:1)
首先,在控制器视图中添加segmentedControl [self.view addSubview:segmentedControl],然后将其分配给表头视图
self.tableView.tableHeaderView = segmentedControl;
哪个错误,您需要创建一个包含大小表标题大小的视图,然后在视图上添加segmentedControl add并将此视图分配给表标题视图。
示例
**UIView* view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 30)];
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc]initWithItems:[NSArray arrayWithObjects:@"ALL", @"HOUSE", @"SENATE", nil]];
segmentedControl.frame = CGRectMake(24, 0, 272, 30);
[segmentedControl addTarget:self action:@selector(segmentedControlHasChangedValue:) forControlEvents:UIControlEventValueChanged];
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
segmentedControl.tintColor = [UIColor grayColor];
[view addSubview:segmentedControl];
self.tableView.tableHeaderView = view;**
答案 2 :(得分:1)
添加到akshaynhegde
答案,您可以通过添加额外的UIView
作为父级来轻松实现此目的,并将UISegmentControl添加到UIView
。在这种情况下,父UIView
将采用UITableView
的整个宽度,而不是UISegmentControl
。
以下应该是代码中的更改
UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0,0,320.0,30.0)];
[view addSubview:segmentedControl];
self.tableView.tableHeaderView = view;
它应该可以解决你的问题。
干杯。