[xcode6] Xcode 6 어댑티브 UI는 iOS 7 및 iOS 6과 어떻게 호환됩니까?

방금 WWDC 비디오 # 216, “UIKit으로 적응 형 UI 구축”을 보았습니다.

Tony Ricciardi는 약 45:10에 Xcode 6의 IB 변경 사항에 대해 이야기하여 새로운 변경 사항을 지원합니다.

“이러한 문서를 이전 버전의 iOS로 거꾸로 배포 할 수 있습니다”라고 말합니다.

“이러한 문서”는 여러 크기 클래스에 대한 특정 설정이있는 XIB 및 스토리 보드를 의미합니다.

나는 이것을 만들고 있지 않다. WWDC 비디오를보십시오.

어떻게 가능합니까? 특성 컬렉션과 크기 클래스는 iOS 8에서만 정의됩니다. iOS 8에 새로운 UI 구문에 의존하는 런타임 동작은 이전 iOS 버전에서 어떻게 작동합니까?

이 경우 이다 가능한 그것은 좋은 것입니다. iOS 6, 7, 8에서 실행되는 앱을 빌드하고 Apple이 Xcode 6에 추가 한 새로운 유연한 UI 레이아웃 기능을 활용할 수 있습니다. 코드에서 직접 적응 형 UI 로직을 만들었습니다. 일의.



답변

Interface Builder DO의 크기 클래스가있는 UI의 변경 사항은 iOS 7 장치 및 Xcode의 미리보기에서 올바르게 나타납니다. 예를 들어, 일정한 높이에 대한 자동 레이아웃 구속 조건 및 글꼴 크기를 변경했습니다. 일정한 폭 일정한 변경 폭은 iOS 7.0을 실행하는 iPad 시뮬레이터에서 볼 수 있습니다.

컴팩트 한 높이를 가진 크기 클래스를 제외한 모든 크기 클래스 최적화는 iOS 7에서 사용할 수 있습니다. 이것은 Apple에 의해 확인되었으며 이제 설명서에 직접 명시되어 있습니다 .

iOS 8 이전의 iOS 버전을 지원하는 앱의 경우 대부분의 크기 클래스는 이전 버전과 호환됩니다.

크기 클래스는 다음과 같은 경우 이전 버전과 호환됩니다
.-앱이 Xcode 버전 6 이상을 사용하여 빌드 됨
-앱의 배포 대상이 iOS 8보다 빠름
-크기 클래스가 스토리 보드 또는 xib에 지정됨
-높이 구성 요소의 값이 작지 않음

iOS 7은 몇 가지 크기 클래스를 존중하지 않기 때문에 사용하면 문제가 발생할 수 있습니다. 예를 들어, Compact w Any h를 정의한 다음 Compact w Compact h를 정의한 경우 iOS 7에서는 Compact w Any h를 존중하지만 iOS 8에서는 Compact w Compact h 모양을 렌더링합니다.

따라서 두 가지 크기 클래스를 사용하고 iOS 7과의 호환성을 유지하려면 Any w Any h 또는 Compact w Any h에서 iPhone에 대해 원하는 최적화를 수행 한 다음 다른 크기 클래스에 대해 다른 최적화를 수행하십시오 필요한 경우 높이가 작은 크기 클래스를 사용할 필요가 없으며 문제가 발생하지 않습니다.


답변

앱을 iOS 7에 배포 할 때 Xcode는 스토리 보드를 두 가지 방식으로 컴파일합니다.

  • iPhone의 경우 스토리 보드는 “Compact-Regular”(컴팩트 한 너비, 일반 높이)로 컴파일되며 “~ iphone”펜촉으로 패키지됩니다.

  • iPad의 경우 스토리 보드는 “Regular-Regular”로 컴파일되고 “~ ipad”펜촉으로 패키지됩니다.

따라서 iOS 7과 iOS 8 모두에 배포하려는 경우 디자인을 Compact-Any 및 Regular-Any 크기 클래스에 중점을 두어야합니다. 그러면 배포 대상에서 UI를 일치시키는 데있어 최고의 경험을 제공 할 수 있습니다. 물론 다른 크기 클래스의 레이아웃을 수정할 수는 있지만 해당 수정 사항이 Compact-Regular 또는 Regular-Regular 크기 클래스에 적용되지 않으면 iOS 7에서 해당 수정 사항이 표시되지 않습니다.


답변

참고 :이 답변은 베타 버전의 Xcode 6과 관련이 있으며 더 이상 배송 버전에는 적용되지 않습니다. 적절한 정보는이 페이지에서 JoeyDave DeLong의 답변을 참조하십시오 .

(원래 답변은 아래에 유지됨) :


Storyboards/XIBs크기 클래스를 사용하도록 구성된 동안에 iOS 7OS가이를 존중하지 않고 size classes기본 ‘Any / Any’크기 클래스를 사용하는 것으로 보입니다.

귀하가 언급하는 특정 슬라이드가 그러한 호환성을 약속하는 것으로 보이지만 현재는 그렇지 않은 것으로 보입니다 (Xcode 6 beta 2).

테스트하기 위해 Any / Any 크기 클래스를 (iOS 8 SDK, deployment target of 7.1)중심으로 vertically and horizontally하지만 Compact / Compact 크기 클래스 (예 : iPhone의 가로 방향)의 왼쪽 상단에 정렬 된 단일 버튼 으로 프로젝트 를 만들었습니다 . Xcode의 미리보기 길잡이는 버튼의 위치가 iOS 8로 바뀌지 만로 바뀌지 않음을 보여줍니다 iOS 7. iOS 7장치 에서도이 동작을 확인했습니다 .


답변

답변과 의견 중 일부는 이전 버전과의 호환성에 대해 논의하면서 Apple 설명서 에서 발췌 한 내용을 직접 공유하겠다고 생각했습니다 .

~~~~~

이전 iOS 버전에서 크기 클래스가있는 앱 배포

iOS 8 이전의 iOS 버전을 지원하는 앱의 경우 대부분의 크기 클래스는 이전 버전과 호환됩니다.

다음과 같은 경우 크기 클래스가 이전 버전과 호환됩니다.

  • 앱은 Xcode 버전 6 이상을 사용하여 빌드되었습니다.
  • 앱의 배포 대상이 iOS 8 이전
  • 크기 클래스는 스토리 보드 또는 xib에 지정됩니다.
  • 높이 구성 요소의 값이 작지 않습니다

~~~~~

마지막 글 머리 기호는이 논의를 목표로하고 있는데, 여기서 “소형 높이”를 사용 하지 않는 한 , 이전 버전과의 호환성을 유지해야합니다.

이것이 누군가를 돕기를 바랍니다!


답변

비슷한 문제를 처리하는 동안 아직 여기에서 보지 못한 다른 답변을 발견했습니다. XIB파일의 크기 클래스 가 전혀 작동하지 않는 것 같습니다. storyboard파일 에서 셀 프로토 타입을 만들면 다른 답변에서 설명한 것처럼 iOS7에서 작동하지만 동일한 프로토 타입 셀이 별도의 XIB파일 크기 로 이동하면 iOS7에서 무시됩니다.

다음은이 동작을 보여주는 샘플 프로젝트에 대한 링크입니다. https://dl.dropboxusercontent.com/u/6402890/testSizeClasses.zip

프로토 타입 셀에는 회색보기의 각 가장자리에서 4 가지 제약 조건이 있습니다. 각각은 같은 방식으로 구성됩니다 : Any / Any-10, Regular / Regular-20

여기에 이미지 설명을 입력하십시오

XIB와 Storyboard 모두 iOS8 시뮬레이터에서 잘 작동하며 iOS7에서는 Storyboard에 정의 된 셀 만 iPad의 제약 조건이 업데이트됩니다.

여기에 이미지 설명을 입력하십시오


답변

시간을 절약 할 수 있다면 Xcode 6이 크기 클래스에 준-역 호환성을 제공하는 방식은 역사 적이고 접미사가있는 스토리 보드를 통해서만 가능 하다고 생각 합니다 . 크기 클래스는 이전에 iPad 스토리 보드와 iPhone 스토리 보드를 정의한 방법에 대한보다 추상적 인 방법이므로 의미가 있습니다.~ipad~iphone

따라서:

  • 크기 클래스를 사용하여 장치 제품군 별 레이아웃 (iPad 대 iPhone)을 지원하는 것이 목표라면 운이 좋을 것입니다. 크기 클래스는 이전에 지원 된 방법에 대한 더 좋은 인터페이스입니다.

  • 당신의 목표는 내 다른 모델에 대한 변경된 레이아웃을 지원하기 위해 크기의 클래스를 사용하는 경우 같은 예 – 디바이스 제품군. iPhone 5/6/6 이상 풍경, 그럼 당신은 운이 없습니다 . 이를 사용하려면 최소 iOS 8 배포 대상이 필요합니다.


답변

@lducool-인터페이스 빌더의 Identity 인스펙터에서 ‘Builds For’를 iOS7.1 이상으로 변경하십시오.