2016-08-12 1 views
2

저는 iOS 개발에 익숙합니다. 자연스럽게 스택보기 및 Xcode의 자동 레이아웃 제약 사항에 문제가 있습니다. 원래 제약 조건과 핀 메뉴를 사용하여 모든 것을 정렬했지만 실제로 스택 뷰를 얻으 려하므로 다시 돌아가서 구현했습니다.자동 레이아웃 및 스택 뷰를 자동으로 조정할 수 없습니다 (Swift 3, Xcode 8)

App Interface

당신은 당신이 내 응용 프로그램에서 나는 스택 뷰의 몇 만든 것을 볼 수 있습니다 위의 내 이미지를 보면 :

  • 상태 표시 줄 수직 스택
  • 제 1 절 수직 스택을
  • 첫 번째 구분선 (높이가 0.5이고 스택 내부에없는보기)
  • 섹션 2에는 주 내부에 2 개의 수평 스택이 있습니다 수직 스택보기
  • 2 분할
  • 3 절 (단지 제 2 조 & 세 사이의 1 분할로 정확히 같은 일이) 수직 스택 및 주요 수직 스택

의 내부 수평 스택 그리고이 모든 것을 포함 스택과 2 개의 분배기는 사용자 인터페이스라는 1 개의 슈퍼 수직 스택에 함께 그룹화됩니다.

제 문제 중 하나는 제 스택과 디바이더 사이에 상하 제약을 설정할 수 없다는 것입니다. 그대로, 섹션과 구분선 사이에 내 마음에 드는 공간이 너무 많습니다. 이미지 1을 보면 섹션 1과 상태 표시 줄 사이에 15라는 상위 제한 조건을 설정하려고했습니다. 또한 제 1 제수와 제 1 구간 사이에 15의 상위 제약 조건을 설정하려고했습니다. 상충되는 제약이 생겨서 그 이유를 알 수 없습니다. 그들이 말하는 모두는 Section1.top = Status Bar.bottom + 15, 1st Divider.top = Section1.bottom + 15 등입니다. 충돌을 해결하는 방법에 대한 아이디어가 있습니까? 나는 디바이더를 움직이려 할 때마다 원래 위치에 다시 스냅하고 제약 번호를 조정하면 같은 오류가 발생합니다.

내 두 번째 문제는 사용자 인터페이스가 슈퍼보기 내부에 들어 가지 못한다는 것입니다. 내 애플 리케이션이 모든 아이폰 화면 크기에 맞게 자동으로 그에 맞게 조정하고 싶습니다. 내가 뭘했는지 핀 메뉴를 사용하여 내 사용자 인터페이스 스택의 각 측면을 제한 0 (한계에 대한 제한을 선택하지 않음)으로 고정하는 것입니다. 사용자 인터페이스 정렬 및 이미지 이것은 높이와 내 라벨의 수직 위치의 일부가 모호 말하는 오류의 몇 결과 2에서와 같이 충돌하지만 내 스택의 모든없이 찌그러 얻을 :

  • 화면을 아래로 이동으로 Height and vertical position are ambiguous for "Tip Percent Segment Control".

  • Height and vertical position are ambiguous for "Bill Amount Text Field".
  • Height is ambiguous for "BILL AMOUNT". 더 라벨이 찌그러되고있다으로 더 오류가 크기. 그리고 각 레이블에 대해 개별적으로 상단 및 하단 제약 조건을 설정했습니다. 각 라벨에 대해 높이를 구현하더라도 오류 메시지는 사라지지만 모든 라벨이 스택에 표시되지는 않습니다. 나는 Alignment and Distribution 메뉴를 골라 내 스택에 대해 다른 것들을 선택하려고 시도했지만 아무도 그 문제를 해결하지 못하는 것 같습니다.

    도움을 주시면 큰 도움이 될 것입니다. Xcode 8 베타 4를 사용하고 Swift 3.0에서이 응용 프로그램을 작성했습니다.

  • 답변

    -5

    TL;

    내 경험으로. Interface Builder를 사용하지 않고 코드에서 모든 뷰를 생성하십시오. new anchor system 또는 SnapKit과 같은 프레임 워크는 매우 쉽습니다. 이점은 당신이 얻을 :

    • 빠른 개발 (연습의 시간 후)
    • 어떤 바보 같은 경고를 인터페이스 빌더에서 당신이 팀에서 작업 할 때
    • 쉽게 병합
    • 엑스 코드는 거의
    • 충돌하지

    나는 몇 달 동안 IB와 싸우고 있었고, 이제는 완전히 행복합니다. 행운을 비네.

    +3

    이것은 말 그대로 현대 iOS 개발자가해야 할 일의 반대 의견입니다. 설계 도구는 이유가 있기 때문에이를 활용하고 최신 사례를 채택 할 수 있습니다. 모든 것을 수동으로 수행하는 것은 Xcode와 디자인 생태계 전반에 걸친 반 (反) 연습이었습니다. 도구를 배우고 규칙에 의해서가 아니라 예외에 의한 코드로 이동하십시오. – Marchy

    +0

    사실 @Marchy 2 년 전 (인터페이스 빌더를 사용하기 전에) "손으로 직접 만든"뷰를 사용하여 작업 한 적이 있습니다. 응용 프로그램에서 유연성, 확장 성 및 제어 기능을 사용하면 " 손으로 "(저주를 잘한다)는 IB를 사용하면 쉽게 달성 할 수 없습니다. 이 도구는 사용하고 싶다면 거기에 있습니다! 어떤 경우에는 작업을 더 쉽게하고 다른 작업자에게는 실제로 복잡하게 만듭니다! 그리고 사과가 그것을 개발했기 때문에 그것을 사용하면 안된다고 생각하지 마십시오 ... 모두는 연공 서열, 프로젝트 및 필요에 따라 달라질 수 있습니다. 단지 일할 수있는 방법이 하나도 없습니다. – BrunoX

    +0

    Xcode Interface Builder는 초보자를위한 iOS 개발에 낮은 수준으로 만 생성되었습니다. 개발자가 잠시 후에 IB를 고수하면 그 사람의 레벨이됩니다. 코드에서와 같이이 정도의 유연성과 유지 보수를받지 못합니다. – Eugene

    -2

    이 부분을 참조하십시오. documentation - 모든 자동 레이아웃 개념을 명확하게 설명하고 있습니다.
    각 요소가 다른 요소에 비례하여 채워지는 하나의 큰 스택보기를 사용하는 것이 문제라고 생각합니다. 이것을 고치십시오.

    작은 충고 하나, 스택은 정말 좋은 것이지만, 남용해서는 안됩니다. :)

    관련 문제