2014-10-20 2 views
0

분할 된 컨트롤을 tableviewheader에 추가하려고합니다. 다음 코드를 사용하여이 작업을 수행합니다.UISegmentedControl setFrame이 작동하지 않습니다.

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

여기서'UITegmentControl'을'UITableView' 헤더에 적용하면 전체 너비를 차지합니다. 헤더에'UIView'를 생성하고이 뷰에 segmentControl을 추가해야합니다. – Kampai

답변

1

세그먼트 컨트롤을 tableHeaderView로 사용하고 있기 때문입니다. UITableViewHeaderView는 항상 당신의 tableView만큼 넓을 것입니다. 높이 만 변경할 수 있습니다.

+0

그것은 작동합니다, 당신은 akshaynhegde 감사합니다. –

1

먼저 컨트롤러보기에 segmentedControl를 추가 [self.view의 addSubview : segmentedControl] 다음은 테이블 헤더보기 잘못

self.tableView.tableHeaderView = segmentedControl; 

에 할당, 당신은 크기 테이블 헤더 뷰를 작성해야 size로 설정 한 다음 segmentedControl add 뷰를 추가하고이 뷰를 테이블 헤더 뷰에 할당합니다.

akshaynhegde 대답에 추가 예

**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;** 
1

, 당신은 쉽게 부모로서 추가 UIView를 추가하여이를 달성하고 UIView에 UISegmentControl를 추가 할 수 있습니다. 이 경우 부모 UIViewUITableView의 전체 너비를 취하지 만 UISegmentControl은 차지하지 않습니다.

그래서 코드 그것은 당신의 문제를 해결해야

UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0,0,320.0,30.0)]; 
[view addSubview:segmentedControl]; 

self.tableView.tableHeaderView = view; 

변화해야 다음과 같습니다.

건배.

+0

iphonic, 고맙습니다. –

관련 문제