2014-10-10 2 views
7

iPhone 앱에 다음과 같은 문제가 있습니다. 또한 내가 예를 들어 [self.btnAfvalSoorten setHidden:YES]; 다음은 사라져와 두 번째 버튼 느릅 나무가 내가 원하는 무엇, AfvalSoorten입니다 숨기면 내 UIViewController (IBOutlet) 에 연결 만하면 나는 여전히 버튼 공간을 가지고 내 IB에 4 개 버튼이 시뮬레이터에서 응용 프로그램을 디버깅하십시오.Xcode IB : UIButton이 숨겨져 있지만 버튼 공간이 여전히 있습니다.

어떻게 제거 할 수 있습니까? 예제가 있습니다.

enter image description here

enter image description here

은 버튼에 대한 스토리 보드의 옵션이 있습니까? 함께 묶으시겠습니까?

답변

15

autolayout을 사용해야합니다. 그렇지 않으면 새로운 화면 크기로 악몽입니다.

autolayout을 사용하면 프로그래밍 방식으로 질문 할 수 있습니다. 특정 제약 조건으로 버튼을 설정 한 다음 버튼을 숨길 경우 필요하지 않은 제약 조건을 제거하십시오. 유연하고 강력하지만 초보자에게 가장 쉬운 방법은 아닙니다.

간단한 방법 중 하나는 추가 제약 조건입니다.당신은 버튼 1, 2, 3 (스크린 샷 참조), 그리고 당신이 버튼 2를 제거하려는 경우 예를 들어, 당신은 3과 1 사이의 여분의 제약 조건을 추가 할 수 있습니다

enter image description here

그 제약을 덜해야 우선 순위 (나의 예에서는 250)가 다른 것 (기본값은 1000)보다 큽니다. 이는 버튼 2가 제 위치에있을 때 (높은 우선 순위 제약 조건을 사용하여) 제약 조건이 적용되지 않음을 의미합니다.

그런 다음 버튼을 숨기는 대신 제거하십시오.

[self.button removeFromSuperview]; 

레이아웃 시스템에서 여전히 고려해야하는 버튼을 숨기면 결정이 내려지고 레이아웃이 더 복잡해집니다. 버튼을 계속 사용하려면 속성 선언에 strong 수정자를 사용하고 있는지 확인하십시오.

+0

훌륭한 해결책이지만,주의 할 점은 다시 보게하려는 경우 ('superview.addSubview (button)') 작동하지 않는다는 것입니다. 당신은 당신의 제약을 잃을 것이다. –

0

방금 ​​숨겨 놨습니다. 필요에 따라 프레임을 설정해야합니다. 또는 자동 레이아웃을 설정할 수 있습니다.

+0

자동 레이아웃 어떤 프레임에 대한? –

0

어쩌면 IB에 autoLayout이있는 해결책이 있을지 모르겠다. 프로그래밍 방식으로 모든 버튼을 배열에 순서대로 추가 할 수 있습니다. 버튼을 숨길 때마다 버튼의 배열을 반복하고, 숨겨진 값을 찾을 때마다 프레임의 y 좌표를 값으로 설정하고 필요에 따라이 값을 증가시킵니다. 마지막으로 사용한 위치에 따라 배치됩니다.

+0

autolayout이 체크되지 않으면 아무 일도 일어나지 않습니다. –

+0

autolayout checked는 xib에 자동 레이아웃을 사용하려는 것을 의미합니다. 자동 레이아웃은 아무 것도하지 않습니다. 개체 위치를 관리하기 위해 자동 레이아웃 형식 순서를 제공한다고 말하는 것입니다. 제약 조건을 추가하고 재생해야합니다. 아무것도 자동이다. –

0
  1. 버튼을 프로그래밍 방식으로 추가 할 수 있습니다.> 배열이 이고 뷰 컨트롤러에 배열을 추가하는 방법이 있습니다.
  2. 제약 조건을 사용하여 재생할 수 있으며 두 번째 단추의 높이 제한 조건을 0으로 숨길 때이 제약 조건에 모든 단추를 연결해야합니다.
+0

제약 조건은 버튼의 속성이 Objective c에 새롭지 않다는 것입니다. –

+0

예 : http://www.techotopia.com/index.php/Working_with_iOS_7_Auto_Layout_Constraints_in_Interface_Builder – kabarga

+0

또는 두 부분으로 시작하는 것이 더 좋습니다. http://www.raywenderlich.com/50317/beginning-auto-layout-tutorial-in-ios- 7-part-1 – kabarga

2

위의 시나리오에 대한 더 나은 방법 - 당신은 어떤 자동 레이아웃 또는 프레임 :

사용 UITableView를 설정하고 그것에 UIButtons와 사용자 정의 셀을 만들 필요 없어요.

  1. 설정 UITableViewCellSelectionStyle 다음 None

  2. 에 버튼 배경은 모든 세포

  3. 그냥 버튼을 숨기려는 그 어느 때 위의 버튼 타이틀

  4. 를 배열을 만들기 위해 동일 배열에서 제거하십시오.

2

이렇게하는 가장 좋은 방법은 스택보기를 사용하는 것입니다. Great tutorial. iOS 9가 필요합니다.

스토리 보드 캔버스의 오른쪽 하단에있는 자동 레이아웃 도구 모음에서 스택보기 아이콘을 찾을 수 있습니다.

나중에 의미 스토리 보드에서

Stack View Button

관련 문제