20

나는 여러 개의 정적 사용자 정의 UITableViewCells을 만들고 UISegmentedControl을 사용자 정의 셀 중 하나로 드래그했습니다.UISegmentedControl - Interface Builder에서 높이 변경

분할 된 컨트롤을 사용하여 너비를 변경할 수 있지만 인터페이스 작성기에서 해당 높이를 변경할 수는 없습니다 (속성은 속성 관리자의 '크기'섹션에서 44로 회색으로 표시됨).

저는 UISegmentedControl을 코드에서 사용자 정의 높이로 만들어서 UITableViewCell에 추가 할 수 있음을 알고 있습니다. Interface Builder에서 세그먼트 화 된 컨트롤의 높이를 조정하는 방법이 있습니까?

답변

2

IB에서는 확실하지 않지만 코드에서 셀을 찾고 프로그래밍 방식으로 UISegmentedControl의 높이를 조정할 수 있습니다.

39

Dashcode 또는 MacVim 또는 TextEdit와 같은 텍스트 편집기에서 xib 파일을 열 수도 있습니다.이 파일은 XML입니다. 당신이 IB의 변화를 볼 수 있습니다 -

<object class="IBUISegmentedControl" id="270020637"> 
    [...] 
    <string key="NSFrame">{{20, 154}, {176, 44}}</string> 
    [...] 
</object> 

그런 다음 당신은 당신이 원하는 높이로 44을 변경할 수 있습니다 : 그럼 거기 요소를 찾아 내 경우에는이처럼 보였다.

이 IB에서 높이를 변경할 수 없습니다 모든 요소 작동

- 또한 UIPicker은 ...

+5

아주 좋은.지금 우리가 처음에 IB에서 그것을 수정시키지 않는 것에 대한 애플의 비난 –

+0

굉장한 대답! Apple 실패! –

+0

#highqualityanswer 이것은 Xcode 5.1에서 저에게 도움이 된 유일한 솔루션입니다. 감사합니다. – GangstaGraham

1

나는 Kender의 대답에 추가 할. 오히려 XIB보다는 스토리 보드를 사용하는 경우

, 당신은 추가해야합니다

       <constraint firstAttribute="height" constant="10" id="9Wo-6S-8EM"/> 
           <constraint firstAttribute="width" constant="201" id="lw7-cq-3XN"/> 

ID가 아무것도 같아요 고유 수 있습니다. 어쩌면 어떤 ID를 고르고 한 글자를 수정할 수 있습니까?

이 전체 코드

<segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="RMR-XS-abw" userLabel="ngentot2"> 
         <constraints> 
          <constraint firstAttribute="height" constant="10" id="9Wo-6S-8EM"/> 
          <constraint firstAttribute="width" constant="201" id="lw7-cq-3XN"/> 
         </constraints> 
         <segments> 
          <segment title="First"/> 
          <segment title="Second"/> 
         </segments> 
        </segmentedControl> 

내가 쉽게 물건을 찾을 수 있도록 내가 userLabel를 추가를합니다.

참고 : 스토리 보드를 읽는 것은 매우 계몽적입니다. 스토리 보드 파일을 변경하는 것은 매우 위험합니다.

35

Interface Builder에서 "높이"를 고정 할 때 간접적으로 변경할 수 있습니다 (세그먼트 컨트롤을 선택한 다음 메뉴 선택 Editor -> Pin-> Height을 선택하십시오).

이렇게하면 편집 할 수있는 해당 컨트롤의 제약 조건 목록에 새로운 Height 제약 조건이 추가됩니다. 변경 사항은 아래 스크린 샷에서 볼 수 있듯이 InterfaceBuilder에 직접 반영됩니다.

interface builder height constraint

+1

nice :) 해당 기능은 iOS 6에서만 작동합니다. – code4j

+4

큰 도움이됩니다. 감사. 예, iOS6 만, 2013 년 2 월 현재 iOS 기기의 83 %입니다. http://www.tuaw.com/2013/02/13/chitika-all-versions-of-ios-6-now-account-for-83-1-of-ios-traf/ –

+0

네비게이션에 임베드 된 경우 바, 우리가 바꿀 수없는 것 같아. – ZYiOS

1

우리는 그 후 우리가 할 수있는 오프 자동 레이아웃을 자동 레이아웃 설정 한 다음 높이를 설정할 수 있습니다. 그래서 그것은 다른 ios 6.0에 도움이 될 것입니다. 당신이 컨트롤을 선택하고 아래 프레임 속성을 추가 할 수있는 인터페이스 빌더 내에서 그것을 할 수

2

"사용자 정의 런타임 속성"

add frame attribute inside interface builder