2009-06-08 5 views

답변

8

이 작업은 InterfaceBuilder가 아닌 코드에서만 수행 할 수 있습니다. IB는 Apple's HIG 안에 머물려고하기 때문에 높이를 변경할 수 없습니다.

프로그래밍 방식으로 높이 (프레임)를 변경하는 경우 setImage : forSegmentAtIndex :를 사용하여 이미지를 변경해야합니다. 기본 이미지가 흐리게 표시 될 때 끔찍한 모양이기 때문입니다.

+0

잘 .. 나는 BTW이 옵션 : – Zteeth

8

나는 이것이 오래된 것임을 알고 있으며, 이미 대답했지만 다른 검색은 알고있다.

IB의 속성에서 스타일을 BAR로 변경하는 것이 매우 짧은 그래픽을 사용하는 매우 빠르고 허용 가능한 해결 방법이라는 것을 알게되었습니다.

+0

정말 좋은) = 하드 방법으로 그것을해야 할 것 같습니다 [segControl frame] .size.height는 읽기 전용 속성이기 때문입니다. – darksider

1

시도했을 때 높이를 직접 할당 할 수 없었습니다. 나는 이것을해야했다 :

- (void)adjustSegControlHeight:(UISegmentedControl*)segControl :(NSInteger)newHeight { 

     CGRect segControlFrame = segControl.frame; 
     segControlFrame.size.height = newHeight; 
     segControl.frame = segControlFrame; 
} 

그러나 나는 어떻게 든 BAR 방법을 사용하기로 결정했다.

+0

를 보지 못했다, 내가 – jianpx

1

나는 이것이 오래된 게시물 인 것을 알고 있지만, 누군가가 그것을 알아 내기 위해 여전히 노력하고 있다면, 이것이 이전에했던 방법입니다. 도움이 필요한 사람에게 도움이되기를 바랍니다.

UISegmentedControl *customeSegment = [[UISegmentedControl alloc] initWithFrame:CGRectMake(206.0f, 7.0f , 110.0f, 30.0f)];

0

누군가가이 질문에 실수를 한단다 경우 요즘 인터페이스 빌더에서이 작업을 수행 할 수있는 방법이있다.

1 : IB 에서 세그먼트 컨트롤을 클릭하십시오. 2 : 그리드보기에서 오른쪽 하단에있는 "핀"컨트롤을 찾으십시오. 3 : "핀 높이"를 클릭 4 : 기어를 클릭하고 "선택 및 편집"

예쁜 해킹-Y : 유틸리티 영역의 크기 관리자 (지금은 높이 제약 조건이됩니다) 5 열 하지만 코드를 통해 업데이트 할 수 없다면이 방법이 효과적입니다.

1

다행히 xib에서도 높이를 변경할 수 있습니다.

xib을 통해서도 가능합니다. xib에 세그먼트 컨트롤을 추가하기 만하면됩니다. 그런 다음 TextEdit에서 xib을 엽니 다. 코드를 찾을 수 있습니다

<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="B99-Tt-vJG"> 

<rect key="frame" x="222" y="82" width="123" height="44"/> 

여기서 44를 필요한 높이로 변경합니다. 이렇게 높이를 변경할 수 있습니다 UIConponent. UIPickerView도 마찬가지입니다.

0

iOS 7 이상에서 AutoLayout을 사용하는 방법은 세그먼트 컨트롤에 높이 제한을 추가 한 다음 프레임을 업데이트하여 자동 레이아웃 문제를 해결하는 것입니다. 그러면 IB가 원하는 높이로 레이아웃을 표시합니다. 그런 다음 높이 제한을 편집하여 IB에서 언제든지 높이를 변경할 수 있습니다.

0

이것은 나를 위해 완벽하게 작동했습니다. 새로운 iOS 및 Xcode 버전이 업데이트되었습니다.[segControl 프레임] .size.height = newHeight가 작동하지 않습니다

NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:yoursegmentedControl 
                   attribute:NSLayoutAttributeHeight 
                   relatedBy:NSLayoutRelationEqual 
                   toItem:nil 
                   attribute:NSLayoutAttributeNotAnAttribute 
                  multiplier:1 
                   constant:THE NEW HEIGHT]; 
[yoursegmentedControl addConstraint:constraint]; 
관련 문제