Itty Bitty Labs.
Itty Bitty Apps의 코드 및 기술 자료.
iOS 6 및 7로 작업하기.
비즈니스상의 이유로 iOS 6을 계속 지원해야하는 경우, 이는 오랫동안 iOS 6 및 7 모두에서 작업해야 할 수도 있음을 의미합니다. 개발자는 코드베이스의 순환 복잡성을 증가시킬 수 있기 때문에 항상이를 싫어합니다 (예 : iOS 6에서는이 작업을 수행하고, 그렇지 않으면 iOS 7에서 수행함). 아내, 엄마, 아빠 및 관리자가 iOS 6을 사용하고 있기 때문에 좋아합니다.
iOS 7의 레이아웃 문제.
다음은 iOS 6에서 실행되는 매우 간단한 앱입니다.
시뮬레이터를 iOS 7로 전환 한 후 레이블이 누락되었습니다.
왜? & nbsp; 그것을 드러내십시오.
레이블은 실제로 NavigationBar 뒤에 있습니다. iOS 7에서 apple은 [UIViewController setEdgesForExtendedLayout :]이라는 새 속성을 도입했으며 기본값은 UIRectEdgeAll입니다. 컨테이너가 네비게이션 컨트롤러 인 경우, 기본 레이아웃은 네비게이션 바 상단부터 시작됩니다. 이것이 모든 UI 요소가 44pt 위로 이동 한 이유입니다.
이 문제를 신속하게 해결하려면 다음 스 니펫을 메소드 - (void) viewDidLoad에 추가하십시오.
레이아웃 문제 수정.
자, 이제 수정되었습니다.
iOS 6 런타임 예외.
iOS 6에서 앱을 실행하면 다음 런타임 예외가 발견되었습니다.
iOS 6 런타임 예외.
모든 iOS 7 전용 API 호출은 적절한 보호자로 감싸 야합니다.
Xcode 4 컴파일 오류.
일부 컴퓨터는 여전히 Xcode 4.6으로 실행 중일 수 있습니다. 최신 코드를 가져 오면 컴파일되지 않습니다.
컴파일 단계 오류를 피하려면 다음 매크로를 만들어야합니다.
그런 다음 필요에 따라 iOS 7 코드 경로를 마무리하십시오.
UILabel 배경 불일치.
UILabel로서 iOS 7의 기본 배경색은 clearColor (대부분의 경우 의미가 있음)이지만 iOS 6 기본값은 흰색입니다. 따라서 레이블 배경색을 명시 적으로 설정하는 것이 좋습니다.
전체 화면에서 상태 표시 줄을 숨 깁니다.
iOS 6에서 presentViewController를 호출하면 기본 모달 화면이 전체 화면이됩니다. (UIModalPresentationFullScreen). iOS 7에서 일관된 경험을 얻으려면 다음 코드를 모달 컨트롤러에 추가하십시오.
[UIToolbar barStyle]
우리는 UIToolbar를 시스템 키보드와 함께 사용했습니다 (실제로 IBAForms와 EZForm을 사용했습니다). iOS 6 키보드가 어두운 피부에 있기 때문에 사람들은 이와 같이 툴바를 스타일링합니다.
iOS 7을 사용하면 키보드 스킨이 더 가벼워 져 다양한 iOS 버전에 대해 다른 barStyle이 필요합니다.
그것보다 & hellip;
확실히 그 이상입니다. 위의 도움말은 iOS 6 & amp; A에서 작업 할 때 보았던 가장 일반적인 문제 중 일부입니다. 7 코드베이스.
Long에 대해서.
Long Sun은 Itty Bitty Apps의 iOS 개발자입니다. 그는 iOS 인트로 스펙 션 도구 인 Reveal 및 Realcommercial iPhone / iPad App에서 작업했습니다. 트위터에서 그를 따라갈 수 있습니다.
최근 게시물.
저작권 및 사본; 2015 - Itty Bitty Apps Pty Ltd - Octopress가 제공합니다.
7 번 작업이 진행되지 않음
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
iOS7에서 automatedAdjustsScrollViewInsets, extendedLayoutIncludesOpaqueBars, edgesForExtendedLayout의 차이점을 설명합니다.
iOS7 UI 전환에 대해 많이 읽었습니다.
나는이 세 가지 속성을 자동으로 얻을 수 없다 automaticAdjustsScrollViewInsets, extendedLayoutIncludesOpaqueBars, edgesForExtendedLayout ??
예를 들어, 보기 컨트롤러를 상태 표시 줄 아래에서 시작하려고하지만이를 수행 할 수 없습니다.
iOS7부터 뷰 컨트롤러는 기본적으로 전체 화면 레이아웃을 사용합니다. 동시에 뷰를 배치하는 방법을보다 효율적으로 제어 할 수 있으며 이러한 속성을 통해 수행 할 수 있습니다.
기본적으로이 속성을 사용하면보기의 어느면을 확장하여 전체 화면을 가릴 수 있는지 설정할 수 있습니다. UIViewController를 UINavigationController로 푸시한다고 가정 해보십시오. 해당 뷰 컨트롤러의 뷰를 배치하면 탐색 막대가 끝나는 위치에서 시작되지만이 속성은 뷰의 어느면 (위쪽, 왼쪽, 아래쪽, 오른쪽)을 전체 화면을 채울 수 있도록 설정할 수 있습니다.
예를 들어 보자.
여기에서는 edgesForExtendedLayout의 값을 설정하지 않으므로 기본값이 사용되므로 (UIRectEdgeAll)보기가 전체 화면을 채우기 위해 레이아웃을 확장합니다.
결과는 다음과 같습니다.
보시다시피 빨간색 배경은 탐색 모음과 상태 표시 줄 뒤에 있습니다.
이제이 값을 UIRectEdgeNone으로 설정하려고합니다. 그러면 뷰 컨트롤러가 화면을 덮도록 뷰를 확장하지 않도록 지시합니다.
이 속성은 UITableView와 같이 UIScrollView 또는 유사 뷰일 때 사용됩니다. 네비게이션 바가 끝나는 곳에서 테이블을 시작하기를 원한다. 왜냐하면 그렇지 않다면 전체 내용을 보지 않을 것이기 때문에 동시에 테이블을 스크롤 할 때 전체 화면을 덮고 싶기 때문이다. 이 경우, edgesForExtendedLayout을 None으로 설정하는 것은 탐색 막대가 끝나는 곳에서 테이블이 스크롤되기 시작하고 그 뒤로 이동하지 않기 때문에 작동하지 않습니다.
뷰 컨트롤러가 인 세트를 자동으로 조정하게하면 (이 프로퍼티를 YES로 설정하고 디폴트 값으로 설정) 인 테이블을 테이블의 맨 위에 추가하여 테이블이 네비게이션이 시작되는 곳에서 시작하도록하면이 속성이 유용합니다. 막대는 끝나지만 스크롤은 전체 화면을 덮을 것입니다.
이것은 NO로 설정된 경우입니다.
그리고 예 (기본값) :
두 경우 모두 표가 탐색 줄 뒤로 스크롤되지만 두 번째 경우 (예)에는 탐색 막대 아래에서 표가 시작됩니다.
이 값은 이전 값에 추가 된 값입니다. 기본적으로이 매개 변수는 NO로 설정됩니다. 상태 표시 줄이 불투명 한 경우 뷰를 확장하여 뷰를 확장하더라도 뷰가 상태 막대를 포함하도록 확장되지 않습니다 (edgesForExtendedLayout to UIRectEdgeAll).
값을 YES로 설정하면보기를 다시 상태 표시 줄 아래로 이동할 수 있습니다.
뭔가 명확하지 않은 경우 의견을 작성하면 답변을 드리겠습니다.
iOS는 UIScrollView의 용도를 어떻게 알 수 있습니까?
iOS는 ViewController의 뷰에서 첫 번째 서브 뷰를 가져오고, 인덱스 뷰에서는 0을 반환하고 UIScrollView의 하위 클래스이면 설명 된 프로퍼티를 뷰에 적용합니다.
물론 이것은 UITableViewController가 기본적으로 작동한다는 것을 의미합니다 (UITableView가 첫 번째보기이기 때문에).
스토리 보드를 사용하고 있는지 확실하지 않지만, 그렇다면보기 컨트롤러가 상태 표시 줄 아래 (그리고 하단 막대 위로)에서 시작되도록하십시오.
IB에서보기 컨트롤러를 선택합니다. 속성 속성에서 '가장자리 확장 - 위쪽 막대 아래'및 '가장자리 확장 - 아래쪽 막대'를 선택 해제하십시오.
내가 storyboards를 사용하고 위의 조언을 사용하지만 난 정확히 어떻게 그것을 구현하는 방법을 잘 모르겠습니다. 다음은 권장 솔루션을 ViewController에 넣음으로써 문제를 어떻게 해결했는지에 대한 간단한 예입니다.
내 문제 : 기본적으로 Auto Adjust를 true로 설정하면 스토리 보드 디자인과 시뮬레이터간에 차이가 발생합니다.
해결됨 : 위의 코드가 적용되어 자동 조정이 사용 중지되었습니다.
이 줄을 추가하여이 문제를 해결했지만 내 문제는 UIScrollView가 아닌 UIView와 관련이 있습니다.
autoAdjustsScrollViewInsets 속성은 일종의 스크롤 뷰 (테이블 뷰, 컬렉션 뷰)가있는 경우에만 작동한다는 점에 유의하십시오.
VC 뷰 또는이 뷰의 첫 번째 하위 뷰입니다.
다른 방법은 첫 번째 하위 뷰인 경우에도 작동하지만 뷰 계층 구조에 다른 스크롤 뷰가 있다고 제안합니다.
EDIT (확장 DIY)
이러한 조건을 충족 할 수없는 경우 (예 : 스크롤보기 아래에 배경 이미지가있는 경우)에도 유사한 동작이 필요한 경우 수동으로 스크롤보기 인세 트를 조정할 수 있습니다. 하지만 44 또는 64 또는 20과 같이 상수로 설정하지 마세요. 당신은 이제까지 크기를 알 수 없습니다. incall / gps / audio 알림이있을 수 있으며 탐색 표시 줄은 항상 44pt가 될 필요는 없습니다.
최선의 해결책은 didLayoutSubviews에서 layoutGuide 길이를 사용하는 것입니다.
동일한 방법으로 bottomLayoutGuide를 사용할 수 있습니다.
iOS 7 탐색 표시 줄 겹침 문제 해결.
꽤 투명 탐색 모음이 iOS 7에서 나왔기 때문에 iOS 개발자를 괴롭 히고있는 문제가있었습니다. 내가 사람들에게 왜 그런지 묻습니다. 그들은 전혀 모릅니다.
모두가 사용해온 간단한 수정이 있지만 해킹이 발생하고 많은 개발자가 문제를 이해하지 않고 사용하고 있습니다.
컨트롤러에 넣으면 갑자기 작동합니다. 좀. 이제 탐색 표시 줄에는 투명성이 없으며 목적을 달성 할 수 없습니다. 배후에 있어야하는보기, 기본보기 및 배경색은 더 이상 표시되지 않습니다.
솔직히 말해서, 신경 쓰지 않아도 될지 모르지만, 여전히 문제를 이해하는 것이 중요하므로 계속 읽어보십시오. 웹 개발을 수행 한 경우 CSS에서 오버플로 : 숨김과 같은 모양입니다. 작업은 있지만 여전히 "해킹"과 같은 종류입니다.
따라서 문제는보기의 프레임이 설정된 경우 iOS 6과 달리 프레임이 탐색 바 아래의 영역을 포함한다는 것입니다.
UIScrollView 또는 UITableView와 같은 하위 클래스가 컨트롤러의 루트보기 인 경우 contentInset 속성이 올바르게 설정되어 탐색 표시 줄 아래에 프레임이 표시 될 수 있습니다. 그리기를 시작하는 실제 원점은 탐색 막대의 아래쪽에 있습니다.
즉, 배경색을 그대로 유지하면서 루트보기를 UIScrollView (또는 하위 클래스)로 변경하여 탐색 막대의 겹침 문제를 간단하게 해결할 수 있습니다.
프로그래밍 방식으로 뷰를 만드는 경우 루트 뷰와 하위 뷰를 작성해야하는 loadView 메서드를 정의하여 루트 뷰를 UIScrollView로 만들 수 있습니다.
이 기능을 사용하면이 기능을 사용할 수 있습니다.
네비게이션 바가 빨간색으로 빛나는 것을 볼 수 있습니까? 파란색보기의 원점을 왼쪽 상단으로 설정했는지 확인하십시오. 모든 것이 잘 앉아 있고 애플이 우리에게 투명 네비게이션 바를 사용할 것을 기대하고 있었다.
스크롤 뷰를 사용하기 때문에 레이아웃을 화면 밖으로 확장하는 더 쉬운 방법을 제공하는 보너스가 추가되었지만, 필요하지 않을 수도 있습니다. 대신 UIView를 대체 할 수 있습니다 contentInset을 설정할 수 있습니다.
나는 이것에 대한 기억의 차이점을 조사하지 않았지만 나의 기대는 극히 미미할 것이라는 것이다.
RubyMotion에 대해 더 자세히 알고 싶다면, motioninotion. tv/ 또는 RubyMotion for Rails 개발자를 통해 제공되는 스크린 캐스트를 확인하십시오. Party 1을 사용하여 Pay What You Want 가격 모델에서 선주문을 할 수 있습니다. 완료되고 곧 출시 될 예정입니다.
RubyMotion Adventures - MotionInMotion 블로그.
RubyMotion Adventures - MotionInMotion 블로그 infofluffyjack.
RubyMotion 튜토리얼, 팁, 가이드 및 재미있는 사실. '자주 게시'이외의 다른 일정에 대한 새 소식
작업하지 않는 가장자리 확장 레이아웃
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
iOS7 - 상태 표시 줄에서보기 - edgesForExtendedLayout이 작동하지 않습니다.
작년에 지어진 프로젝트가 있으며 스토리 보드가없는 XIB를 사용합니다. XIB는 자동 레이아웃을 사용하지 않지만 일부 자동 크기 조정을 사용합니다. iOS7에서 실행할 때 모든보기가 상태 표시 줄 아래에있는 문제가 있습니다. 나는 이것이 이것이 예상 될 수있는 iOS7의 새로운 기능이라는 것을 충분히 이해합니다. 그러나이를 수정하지 않는 해결책은 모두 작동하지 않습니다. 항상 상태 표시 줄 아래에 표시되는보기 상단에 이미지가 있으며 nav-bars 또는 이와 유사한 것을 사용하지 않습니다.
XIB (그들은보기에 아무런 영향을주지 않습니다)에서 Y-delta를 업데이트하려고 시도했지만, edgesForExtendedLayout을 UIRectEdgeNone (아무 것도하지 않음)으로 설정하고 다른 많은 것들을 설정하려고했습니다. 때마다 상태 표시 줄의 여유 공간을 허용하기 위해 XIB의보기를 수동으로 이동하지 않는 한 상태 표시 줄에 언제든지 그 아래에있는보기가 표시됩니다 (그러나 그 해결책은 작동하지 않습니다. 물론 iOS6에서는 제대로 보이지 않습니다.)
이상한 점은 view-shift에서 해킹하기 위해 일련의 코드를 사용해도 다음과 같이 작동하지 않는다는 것입니다.
.. 그런 종류의 해결책으로 갈 것이 아니라, 작동하지 않는다는 것이 이상합니다. (자동 레이아웃이있는 경우 작동하지 않는 것이 보통입니다. 이 경우에는 그렇지 않습니다.)
상태 표시 줄에 표시되는 디자인 요구 사항이며 iOS7의 상태 표시 줄 아래에보기를 설정할 수없는 이유가 무엇인지 알지 못합니다. 제목과 Apple의 전환 / 가이드에 대한 모든 Stack Overflow 게시물을 읽었습니다. 다시 한번 강조하면, 그것이 어떻게 작동해야하는지, 그리고 예상되는 해결책이 이것에 있어야한다는 것을 완전히 이해하지만, 이 특정 프로젝트에서는 아무 것도 작동하지 않는 것으로 보인다.
나는 경험 많은 iOS 개발자이지만이 프로젝트는 다른 팀에 의해 만들어 졌기 때문에 XIB 파일, plist 또는 위의 설정을 트럼프 할 수있는 코드에 숨겨진 것이 있는지 모릅니다. 이것에 대해 조사할만한 것이 있거나 제가 제공 할 수있는 더 많은 정보가 있다면 알려주십시오.
미리 감사드립니다!
Interface Builder에서 iOS 6/7 델타 값을 설정하는 경우 Interface Builder 문서에서 "View as"를 "iOS 6"으로 설정해야합니다. 복제하려는 iOS 6 레이아웃이기 때문입니다. 델타는 iOS 7에서만 사용되어 콘텐츠를 상태 표시 줄 아래로 밀어 넣습니다. "보기 모드"를 iOS 7 (기본값)으로 설정하면 델타는 iOS 6에서 iOS 7 모양을 제공합니다.
그러나 델타는 프레임이 델타를 고려하지 않으므로 뷰 프레임을 기반으로 뷰를 프로그램 적으로 재배치하거나 크기를 조정하면 도움이되지 않습니다.
델타를 사용하는 대신 내가 찾은 최선의 해결책은 기본 XIB에서 자동 레이아웃을 활성화 한 다음 상단 / 내용보기에서 상단 레이아웃 가이드를 따르도록 상단 공간 제약 조건을 설정하는 것입니다. 이 가이드는 iOS 7에서 소개되었으며 상태 표시 줄 아래의 위치를 나타냅니다. 안타깝게도 Storyboards를 사용하지 않을 때는 Interface Builder에서이 가이드를 사용할 수 없지만 프로그래밍 방식으로 추가 할 수 있습니다.
내가 한 것은 인터페이스 빌더 대신 superview에 공간 제약 조건을 추가하고 코드에서이를위한 콘센트를 만들었습니다. 그런 다음 viewDidLoad에서 topLayoutGuide를 사용할 수있는 경우 (iOS 7 이상) 대신 상단 레이아웃 가이드를 사용하여이 콘센트의 제약 조건을 버전으로 바꿉니다.
참고로 아래의 솔루션은 ViewController에 적용했을 때 작동했습니다. 그러나, 이상적이지 않고 조금 해킹 된 것입니다. 내가 취할 수있는 유일한 방법이라면 그래도 될 수 있습니다.
애플은 자동 레이아웃을 사용하여 이것을 달성하도록 당신을 밀어 붙이고있다. 보기의 맨 위 하위 뷰에서 "Top Layout Guide"에 대한 제한 조건을 설정해야합니다.
예제는이 문서를 참조하십시오.
XIB없이이 작업을 수행하려면 프로그래밍 방식으로 제약 조건을 추가해야합니다. 애플의 문서는 이것에 대한 좋은 예를 보여 주며, 나는 아래에 요약했다.
TopLayoutGuide는 뷰 컨트롤러의 속성이므로 변수 바인딩 사전에서 사용하면됩니다. 그런 다음 보통과 같이 제약 조건을 설정합니다.
1) 불투명 한 네비게이션 바가 마음에 들지 않는다면 가장 간단한 해결책 :
2) svguerin3의 대답은 일반적인 경우에는 작동하지 않습니다. 예를 들어 하위 뷰 중 하나에서 자동 크기 조정 기능을 사용하여 컨테이너의 맨 아래에 구부려지면 새 위치가 잘못됩니다. 최악의 경우 화면 밖으로 나올 수 있습니다.
XIBs를 소스로보고, edgesforextendedlayout을 포함하는 행을 제거하려고 시도 했습니까 ??
스토리 보드의 장면의 주요 뷰는 XIB로 표시되므로 스토리 보드의 장면에서이 선을 제거해야했습니다.
우리에게 일어났던 일은 어떤 장면에서 장면의 주보기에 대한 XIB 콘텐츠가 상태 표시 줄과 탐색 모음의 높이만큼 아래로 밀리고 있다는 것이 었습니다.
이 줄을 제거하면 XIB가 스토리 보드의 장면의 맨 위에있는 것과 같이 표시 될 수있었습니다.
안타깝게도, 우리는 이것이 무엇을 유발했는지는 알지 못하지만, UITextView가 먼저 나타나도록 XIB의 메인 뷰 내에서 내용의 순서를 변경할 때 발생하는 것을 보았습니다. 이 항목이 트리거 된 후 항목 순서를 다시 정렬하면이 원치 않는 동작을 제거하는 데 아무런 영향을 미치지 않습니다.
희망이 사람이 문제 의이 유형을 실행하는 데 도움이되기를 바랍니다.
스토리 보드를 사용하는 경우보기의 상단 레이아웃을 설정 한 후 특성 검사기에서 "불투명 한 막대"를 선택 취소 할 수 있습니다.
App Store를 통해 가져 오기 우리의 응용 프로그램 에서이 게시물을 읽으십시오!
iOS7 - 상태 표시 줄에서보기 - edgesForExtendedLayout이 작동하지 않습니다.
작년에 지어진 프로젝트가 있으며 스토리 보드가없는 XIB를 사용합니다. XIB는 자동 레이아웃을 사용하지 않지만 일부 자동 크기 조정을 사용합니다. iOS7에서 실행할 때 모든보기가 상태 표시 줄 아래에있는 문제가 있습니다. 나는 이것이 이것이 예상 될 수있는 iOS7의 새로운 기능이라는 것을 충분히 이해합니다. 그러나이를 수정하지 않는 해결책은 모두 작동하지 않습니다. 항상 상태 표시 줄 아래에 표시되는보기 상단에 이미지가 있으며 nav-bars 또는 이와 유사한 것을 사용하지 않습니다.
XIB (그들은보기에 아무런 영향을주지 않습니다)에서 Y-delta를 업데이트하려고 시도했지만, edgesForExtendedLayout을 UIRectEdgeNone (아무 것도하지 않음)으로 설정하고 다른 많은 것들을 설정하려고했습니다. 때마다 상태 표시 줄의 여유 공간을 허용하기 위해 XIB의보기를 수동으로 이동하지 않는 한 상태 표시 줄에 언제든지 그 아래에있는보기가 표시됩니다 (그러나 그 해결책은 작동하지 않습니다. 물론 iOS6에서는 제대로 보이지 않습니다.)
이상한 점은 view-shift에서 해킹하기 위해 일련의 코드를 사용해도 다음과 같이 작동하지 않는다는 것입니다.
.. 그런 종류의 해결책으로 갈 것이 아니라, 작동하지 않는다는 것이 이상합니다. (자동 레이아웃이있는 경우 작동하지 않는 것이 보통입니다. 이 경우에는 그렇지 않습니다.)
상태 표시 줄에 표시되는 디자인 요구 사항이며 iOS7의 상태 표시 줄 아래에보기를 설정할 수없는 이유가 무엇인지 알지 못합니다. 제목과 Apple의 전환 / 가이드에 대한 모든 Stack Overflow 게시물을 읽었습니다. 다시 한번 강조하면, 그것이 어떻게 작동해야하는지, 그리고 예상되는 해결책이 이것에 있어야한다는 것을 완전히 이해하지만, 이 특정 프로젝트에서는 아무 것도 작동하지 않는 것으로 보인다.
나는 경험 많은 iOS 개발자이지만이 프로젝트는 다른 팀에 의해 만들어 졌기 때문에 XIB 파일, plist 또는 위의 설정을 트럼프 할 수있는 코드에 숨겨진 것이 있는지 모릅니다. 이것에 대해 조사할만한 것이 있거나 제가 제공 할 수있는 더 많은 정보가 있다면 알려주십시오.
미리 감사드립니다!
Interface Builder에서 iOS 6/7 델타 값을 설정하는 경우 Interface Builder 문서에서 "View as"를 "iOS 6"으로 설정해야합니다. 복제하려는 iOS 6 레이아웃이기 때문입니다. 델타는 iOS 7에서만 사용되어 콘텐츠를 상태 표시 줄 아래로 밀어 넣습니다. "보기 모드"를 iOS 7 (기본값)으로 설정하면 델타는 iOS 6에서 iOS 7 모양을 제공합니다.
그러나 델타는 프레임이 델타를 고려하지 않으므로 뷰 프레임을 기반으로 뷰를 프로그램 적으로 재배치하거나 크기를 조정하면 도움이되지 않습니다.
델타를 사용하는 대신 내가 찾은 최선의 해결책은 기본 XIB에서 자동 레이아웃을 활성화 한 다음 상단 / 내용보기에서 상단 레이아웃 가이드를 따르도록 상단 공간 제약 조건을 설정하는 것입니다. 이 가이드는 iOS 7에서 소개되었으며 상태 표시 줄 아래의 위치를 나타냅니다. 안타깝게도 Storyboards를 사용하지 않을 때는 Interface Builder에서이 가이드를 사용할 수 없지만 프로그래밍 방식으로 추가 할 수 있습니다.
내가 한 것은 인터페이스 빌더 대신 superview에 공간 제약 조건을 추가하고 코드에서이를위한 콘센트를 만들었습니다. 그런 다음 viewDidLoad에서 topLayoutGuide를 사용할 수있는 경우 (iOS 7 이상) 대신 상단 레이아웃 가이드를 사용하여이 콘센트의 제약 조건을 버전으로 바꿉니다.
참고로 아래의 솔루션은 ViewController에 적용했을 때 작동했습니다. 그러나, 이상적이지 않고 조금 해킹 된 것입니다. 내가 취할 수있는 유일한 방법이라면 그래도 될 수 있습니다.
애플은 자동 레이아웃을 사용하여 이것을 달성하도록 당신을 밀어 붙이고있다. 보기의 맨 위 하위 뷰에서 "Top Layout Guide"에 대한 제한 조건을 설정해야합니다.
예제는이 문서를 참조하십시오.
XIB없이이 작업을 수행하려면 프로그래밍 방식으로 제약 조건을 추가해야합니다. 애플의 문서는 이것에 대한 좋은 예를 보여 주며, 나는 아래에 요약했다.
TopLayoutGuide는 뷰 컨트롤러의 속성이므로 변수 바인딩 사전에서 사용하면됩니다. 그런 다음 보통과 같이 제약 조건을 설정합니다.
1) 불투명 한 네비게이션 바가 마음에 들지 않는다면 가장 간단한 해결책 :
2) svguerin3의 대답은 일반적인 경우에는 작동하지 않습니다. 예를 들어 하위 뷰 중 하나에서 자동 크기 조정 기능을 사용하여 컨테이너의 맨 아래에 구부려지면 새 위치가 잘못됩니다. 최악의 경우 화면 밖으로 나올 수 있습니다.
XIBs를 소스로보고, edgesforextendedlayout을 포함하는 행을 제거하려고 시도 했습니까 ??
스토리 보드의 장면의 주요 뷰는 XIB로 표시되므로 스토리 보드의 장면에서이 선을 제거해야했습니다.
우리에게 일어났던 일은 어떤 장면에서 장면의 주보기에 대한 XIB 콘텐츠가 상태 표시 줄과 탐색 모음의 높이만큼 아래로 밀리고 있다는 것이 었습니다.
이 줄을 제거하면 XIB가 스토리 보드의 장면의 맨 위에있는 것과 같이 표시 될 수있었습니다.
안타깝게도, 우리는 이것이 무엇을 유발했는지는 알지 못하지만, UITextView가 먼저 나타나도록 XIB의 메인 뷰 내에서 내용의 순서를 변경할 때 발생하는 것을 보았습니다. 이 항목이 트리거 된 후 항목 순서를 다시 정렬하면이 원치 않는 동작을 제거하는 데 아무런 영향을 미치지 않습니다.
희망이 사람이 문제 의이 유형을 실행하는 데 도움이되기를 바랍니다.
스토리 보드를 사용하는 경우보기의 상단 레이아웃을 설정 한 후 특성 검사기에서 "불투명 한 막대"를 선택 취소 할 수 있습니다.
Comments
Post a Comment