여기 에서 흰색 막대에 대한 해결책을 찾았습니다 .
viewport-fit=cover
뷰포트 <meta>
태그 에 설정 합니다. 예 :
<meta name="viewport" content="initial-scale=1, width=device-width, height=device-height, viewport-fit=cover">
UIWebView의 흰색 막대가 사라집니다.
검은 색 영역을 제거하는 솔루션 ( 아래 주석에서 @dpogue 제공 )은 기본적으로 Cordova에서 사용되는 레거시 시작 이미지를로 대체 하기 위해 LaunchStoryboard 이미지 를 cordova-plugin-splashscreen
사용하는 것입니다. 이렇게하려면 다음을 iOS 플랫폼에 추가하십시오 config.xml
.
<platform name="ios">
<splash src="res/screen/ios/Default@2x~iphone~anyany.png" />
<splash src="res/screen/ios/Default@2x~iphone~comany.png" />
<splash src="res/screen/ios/Default@2x~iphone~comcom.png" />
<splash src="res/screen/ios/Default@3x~iphone~anyany.png" />
<splash src="res/screen/ios/Default@3x~iphone~anycom.png" />
<splash src="res/screen/ios/Default@3x~iphone~comany.png" />
<splash src="res/screen/ios/Default@2x~ipad~anyany.png" />
<splash src="res/screen/ios/Default@2x~ipad~comany.png" />
<!-- more iOS config... -->
</platform>
그런 다음에서 다음 치수를 사용하여 이미지를 만듭니다 res/screen/ios
(기존 항목 제거).
Default@2x~iphone~anyany.png - 1334x1334
Default@2x~iphone~comany.png - 750x1334
Default@2x~iphone~comcom.png - 1334x750
Default@3x~iphone~anyany.png - 2208x2208
Default@3x~iphone~anycom.png - 2208x1242
Default@3x~iphone~comany.png - 1242x2208
Default@2x~ipad~anyany.png - 2732x2732
Default@2x~ipad~comany.png - 1278x2732
검은 색 막대가 제거되면 iPhone X에 대해 해결해야 할 또 다른 점이 있습니다. 상태 표시 줄은 "노치"로 인해 20px보다 큽니다. 이는 Cordova 앱의 맨 위에있는 모든 콘텐츠가 가려진다는 것을 의미합니다. :
패딩을 픽셀 단위로 하드 코딩하는 대신 safe-area-inset-*
iOS 11 의 새로운 상수를 사용하여 CSS에서 자동으로 처리 할 수 있습니다 .
참고 : iOS 11.0에서는 이러한 상수를 처리하는 함수가 호출 constant()
되었지만 iOS 11.2에서는 Apple이 이름을 env()
( 여기 참조 )로 변경 했으므로 두 경우 모두 CSS 규칙을 둘 다로 오버로드하고 CSS 폴백 메커니즘 에 의존 하여 적절한 것 :
body{
padding-top: constant(safe-area-inset-top);
padding-top: env(safe-area-inset-top);
}
결과는 원하는대로입니다. 앱 콘텐츠가 전체 화면을 덮지 만 "노치"에 의해 가려지지는 않습니다.
위의 단계를 보여주는 Cordova 테스트 프로젝트를 만들었습니다. webview-test.zip
노트:
바닥 글 버튼
- 앱에 바닥 글 버튼이있는 경우 (내가하는 것처럼)
safe-area-inset-bottom
iPhone X의 가상 홈 버튼과 겹치지 않도록 적용해야합니다.
- 제 경우
<body>
에는 바닥 글이 절대 위치에 있기 때문에 이것을 적용 할 수 없었기 때문에 바닥 글에 직접 적용해야했습니다.
.toolbar-footer{
margin-bottom: constant(safe-area-inset-bottom);
margin-bottom: env(safe-area-inset-bottom);
}
cordova-plugin-statusbar
- iPhone X에서 상태 표시 줄 크기가 변경되어 iPhone X에서 이전 버전이
cordova-plugin-statusbar
잘못 표시됨
- Mike Hartington 은 필요한 변경 사항을 적용하는 이 pull 요청 을 생성 했습니다 .
- 이것은
cordova-plugin-statusbar@2.3.0
릴리스 에 병합 되었으므로 안전 영역 삽입에 적용하려면이 버전 이상을 사용하고 있는지 확인하십시오.
스플래시 스크린
- iOS 11 / iPhone X에서 LaunchScreen 스토리 보드 제약 조건이 변경되었습니다. 즉, 기존 플러그인 버전을 사용할 때 시작 화면이 "점프"하는 것처럼 보였습니다 ( 여기 참조 ).
- 이것은 버그 보고서 CB-13505 , 수정 된 PR cordova-ios # 354 에서 캡처되었으며에서 릴리스
cordova-ios@4.5.4
되었으므로 최신 버전의 cordova-ios
플랫폼을 사용하고 있는지 확인하십시오 .
장치 방향
- iOS 11.0에서 UIWebView를 사용하는 경우 세로> 가로> 세로에서 회전하면
safe-area-inset
다시 적용되지 않아 콘텐츠가 다시 노치에 의해 가려집니다 ( jms 로 강조 표시됨). 아래 주석에서 ).
- 앱이 가로 모드로 실행 된 다음 세로로 회전하는 경우에도 발생합니다.
- .NET을 통해 WKWebView를 사용할 때는 발생하지 않습니다
cordova-plugin-wkwebview-engine
.
- 레이더 보고서 : http://www.openradar.me/radar?id=5035192880201728
- 업데이트 : iOS 11.1에서 수정 된 것으로 보입니다.
참고로 이것은 내가 열어 본 원래 Cordova 문제로 https://issues.apache.org/jira/browse/CB-13273