2013-02-27 4 views
2

iOS 프로젝트에서 일하고 있는데이 이상한 문제가 발생했습니다. 나는 bar 스타일의 UISegmentedControl 엘리먼트를 가지고있다. 그것에는 3 개의 세그먼트가있다. 세그먼트는 80의 고정 크기가 있습니다. 또한 배경으로 설정할 각 세그먼트가 선택된 3 개의 이미지가 있습니다. 여기에 선택으로, 세그먼트 중 하나가 설정되어보기가로드 them`UISegmentedControl 배경 이미지 이상한 동작

enter image description here

중 하나이며,이 이미지는이 같은 배경으로 설정 : 나는를 실행할 때 이제

[self.genderSelectionButton setBackgroundImage:[UIImage imageNamed:@"gender-switch01.png"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

enter image description here

당신이 볼 수 있듯이, t : 5.1 시뮬레이터에 프로젝트, 나는 분할 버튼이 왜곡 된보기를 얻을 그는 중간 세그먼트가 내가 준 크기를 유지하지만, 이미지는 중간에서 가장자리로 스트레칭 종류입니다. 선택한 세그먼트가 NO으로 설정되어 있어도 강조 표시됩니다.

거의 동일 iOS6의에서 발생 (... 배경 이미지 다시 연신) enter image description here

는 : 버튼 선택을 수신하는 방법에있어서 는 I 배경 이미지를 변경하고 다음을 얻는다. 지금 내가 뭔가 잘못하고있는 것입니까, 아니면이 문제를 해결할 수있는 방법이 있습니까 ??

EDIT

정상적인 버튼 별도 이미지 선택 버튼 칸막이 더 구현 알았다. 아래 답변을 참조하십시오.

+0

내 일반적인 문제는 색조 U http://stackoverflow.com/questions/2270526/uisegmentedcontrol-selected-segment-color – Dhara

+0

없는이 도움이 될 수 있습니다 : 여기

모든 것이 수행의 기본 코드 색상,하지만 뻗어 배경 이미지 ...하지만 어쨌든 고마워요. – ArVan

+0

내 머리 꼭대기에서 문제는 배경 이미지를 바꾸지 않고 분할 된 컨트롤 너비와 세그먼트 너비를 계산하는 것을 엉망이되었다고 말할 것입니다. 고정 너비를 사용하면 때때로 그렇게 할 수 있습니다. 크기가 약간 혼란스럽고 예상과 일치하는지 확인하거나 세그먼트 컨트롤 생성 코드를 게시하여 오류를 검사하십시오. – Adis

답변

1

전체 배경 이미지를 설정하는 것이 맞춤 분할 버튼을 처리하는 가장 좋은 방법은 아닌 것처럼 보입니다. 보기는 here입니다.

UIImage *segmentSelected = 
    [[UIImage imageNamed:@"segcontrol_sel.png"] 
     resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 0, 15)]; 
UIImage *segmentUnselected = 
    [[UIImage imageNamed:@"segcontrol_uns.png"] 
     resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 0, 15)]; 
UIImage *segmentSelectedUnselected = 
    [UIImage imageNamed:@"segcontrol_sel-uns.png"]; 
UIImage *segUnselectedSelected = 
    [UIImage imageNamed:@"segcontrol_uns-sel.png"]; 
UIImage *segmentUnselectedUnselected = 
    [UIImage imageNamed:@"segcontrol_uns-uns.png"]; 

[[UISegmentedControl appearance] setBackgroundImage:segmentUnselected 
    forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
[[UISegmentedControl appearance] setBackgroundImage:segmentSelected 
    forState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; 

[[UISegmentedControl appearance] setDividerImage:segmentUnselectedUnselected 
    forLeftSegmentState:UIControlStateNormal 
    rightSegmentState:UIControlStateNormal 
    barMetrics:UIBarMetricsDefault]; 
[[UISegmentedControl appearance] setDividerImage:segmentSelectedUnselected 
    forLeftSegmentState:UIControlStateSelected 
    rightSegmentState:UIControlStateNormal 
    barMetrics:UIBarMetricsDefault]; 
[[UISegmentedControl appearance] 
    setDividerImage:segUnselectedSelected 
    forLeftSegmentState:UIControlStateNormal 
    rightSegmentState:UIControlStateSelected 
    barMetrics:UIBarMetricsDefault];