2016-09-15 10 views
4

AutoLayout 및 제약없이 작동하는 앱이 있습니다. 크기 검사기에서 자동 크기 조정 만 설정했습니다. iOS 9 이하에서는 모두 정상적으로 작동합니다. iOS 10에서는 자동 크기 조정이 작동하지 않아 화면에서 크기가 설정됩니다. 다음 그림을 봐 : 아이폰 OS 10에서 을 시뮬레이터iOS 10에서 자동 크기 조정이 작동하지 않습니다.

![1]

같은으로는 아이폰 5와 아이폰 6 플러스에 발생한다. 자동 검색 기능을 사용하면 문제가 해결되지 않습니다.

편집 1 : 또 다른 해결 방법은 스토리 보드를 Xcode 7.x 버전으로 설정하는 것입니다. 파일 검사기Interface Builder 문서 아래에서이 작업을 수행 할 수 있습니다. 옵션을 설정하려면에서 Xcode 7.x 값으로 엽니 다. 저장하고 닫을 때 다음 질문에 답하십시오. 이제 iPad 또는 iPhone에서 프로젝트를 실행하면 UIScrollView가있는 모든보기 컨트롤러가 자동 크기 조정과 함께 잘 작동합니다.

중요 : 이 해결 방법은 스토리 보드를 변경할 때마다 수행해야합니다.

편집 2 : 여기 보면, 애플 개발자 포럼에서 크로스 게시물을했다 : https://forums.developer.apple.com/message/182716#182716

+0

당신은 게시 할 수 없습니다 스토리 보드 또는 xib 파일의 이미지가 텍스트 필드 중 하나와 선택되어 있고 크기 검사기가 열려 있습니까? – JingJingTao

+0

다음은 크기 컨트롤러가있는보기 컨트롤러의 이미지입니다. [크기 관리자] [1] [1] :는 폭 및/또는 높이에 대한 자동 크기 화살표는 단지 ​​이들 구성 요소에 http://i.stack.imgur.com/V2Llz.png이었다 곳 활성화되었습니다. –

+0

하늘색 배경이란 무엇입니까? 다른 견해인가? – TheTiger

답변

2

두 가지 가능한 솔루션,

  1. 이미지에 표시 같은 autoresizingmask을 수정, 그것은 100 % 아니다 이상적인 패딩은 없기 때문에 이상적입니다.

enter image description here

  • 다시 각 텍스트 필드에 대해이 작업을 수행해야합니다으로 즉 CGRectMake(padding, y, self.view.frame.size.width-padding*2, height) 당신의 텍스트 필드의 프레임이,이 크지 않다 설정,하지만 것
      일 : p.

    불행히도 나는 왜 텍스트 필드의 너비가 1000+가되는지 모르겠다. iOS 10에 대해 설정 한 것처럼, scrollview와 관련이있을 수 있으며, scrollview없이 테스트했다. 예상대로 일했다.

  • +0

    답변 해 주셔서 감사합니다. UIScrollView의 문제입니다. UITextField가 스크롤 뷰에 있으면 자동 크기 조정이 작동하지 않습니다. UITextField가 UIViewController에 직접있는 경우 자동 크기 조정이 정상적으로 작동합니다. 2 단계는 UIScrollView의 UITextField에서도 잘 작동합니다. iOS 10에서 UIScrollView가 변경된 경우 –

    +0

    걱정하지 않아도 UIScrollView가 변경된 것으로 생각하지 않지만 변경 사항을 검토하지는 않았습니다. – JingJingTao

    +0

    그것은 UIScrollView에서 자동 크기 조정과 관련된 버그였습니다. 이전 프로젝트를 열어 스토리 보드에 들어가서 앱을 컴파일하고 시작하면 어떻게됩니까? 문제가 있었고 UIScrollView의 모든 구성 요소가 커졌습니다. 오늘 저는 사과에게 버그 신고서를 쓰고 피드백을 받기를 바랍니다. –

    4

    이것은 Xcode 8의 버그입니다. 7.x 버전을 사용하여 앱을 빌드하면 정상적으로 표시됩니다.

    +0

    불행히도 Xcode 7.x는 macOS Sierra에서 지원되지 않습니다. –

    +0

    @MichaelLong Xcode의 버전을 Sierra에서 사용할 수 없다거나 XIB의 7.x 옵션을 사용할 수 없다는 말입니까? – SolidSnake4444

    +0

    @ SolidSnake4444 Xcode 7.x는 Sierra에서 안정적이지 않고 충돌하는 경향이 있습니다. Apple은 Sierra에서 Xcode 7.x가 지원되지 않는다고 밝혔습니다. –

    4

    먼저 문제가되는 스토리 보드로 이동하여 문제의 scrollview와 속성에서 하위보기 자동 크기를 선택 취소합니다. 이렇게하면 Xcode가 우리가하려는 모든 작업을 자동으로 취소하지 않게됩니다.

    둘째로,이 부분이 고통 스럽습니다. 스크롤보기에서보기의 너비를 수정하고 적절한 설정으로 되돌려 야합니다. 보기를 클릭하고 오른손 컨트롤 손잡이를 찾은 다음 스크롤보기 안으로 다시 드래그하십시오.

    다음 단계를 더 쉽게 수행하려면 모든 하위보기가 scrollview 내에 중첩 된 단일 컨텐트보기에 있어야합니다. (중첩 된 콘텐츠보기는 스크롤보기에서 자동 크기 조정 자동 레이아웃을 사용하는 경우 "우수 사례"이기도합니다.)

    먼저 자동 게시 하위보기의 선택을 취소하지 않으면 Xcode가 친절하게 다음 번에 스토리 보드를 다시 열 때 모든 것이 다시 나타납니다.

    셋째, 스크롤 뷰에는 IBOutlets가 필요하고 코드에는 콘텐츠 뷰가 필요합니다.

    마지막으로,

    - (void)viewDidLayoutSubviews 
    { 
        [self.scrollView setAutoresizesSubviews:YES]; 
    
        CGRect frame = self.contentView.frame; 
        frame.size.width = self.view.frame.size.width - 20; 
        self.contentView.frame = frame; 
    
        [super viewDidLayoutSubviews]; 
    } 
    

    는 기본적으로, 우리는 적절한 폭으로 컨텐츠 뷰의 폭을 설정 한 후 자동 크기를 다시 사용하고있어 ... 당신의 ViewController에 다음을 추가합니다. 여기에서 내 콘텐츠보기가 스크롤보기 내에 10px 여백 (따라서 - 20)으로 중첩되도록하고 싶습니다.

    위의 내용은 스토리 보드의 각기 다른 스크롤 뷰에 대해 수행해야합니다.

    autolayout을 사용하여 새 레이아웃을 수행하는 것보다 약간의 조치가 필요하지만 그만한 조치가 필요합니다. 나는 약 12 ​​개의 장면과 VC로 약 15 분 만에 스토리 보드를 패치 할 수있었습니다. 자동 레이아웃을 사용하여 모든 것을 재구성하는 데 훨씬 더 오래 걸렸을 것입니다.

    또한 최신 Xcode 8.1 베타 버전에서는 수정되지 않았습니다. 나는 그들이 버그를 알고 있다고 확신하지만, 이것이 개발자들이 자동 레이아웃을 사용하도록 "격려"하는 애플의 방법이라고 확신한다.

    +0

    scrollview에서 자동 크기 조정 하위 뷰의 선택을 취소하면 내 문제가 해결되었습니다. 감사! – irmu

    0

    시뮬레이션 된 크기의보기 컨트롤러는 크기 속성에서 변경할 수 있습니다. 크기 검사기로 이동하여 시뮬레이션 된 크기를 자유 양식으로 변경하십시오. 원하는대로보기의 너비와 높이를 설정할 수 있습니다. 이 아이폰 OS 9 있다는 화면을 보려면, 내 테스트에 따르면 600

    enter image description here

    0

    에 폭과 높이 변경이 thread 버그 엑스 코드 8.1 베타에서 해결 2.