2017-10-23 21 views
3

시트를 iPhone X의 안전한 영역에 정렬하려고 할 때 Xcode를 처음 사용하는 경우 시트 아래에 투명한 영역이 남습니다.iPhone X - 원점 표시 주변 지역의 색 설정

시트를 확장하거나 안전 영역 외부에 정렬하지 않고 해당 영역의 채우기를 설정하는 방법이 있습니까?

enter image description here

답변

1

예, 그것은 좋은 생각이 아니다 그러나 당신의 문제에 대한 해결책이 될 수 있습니다.

이 단계를 수행

  • 활성화 '안전 영역 레이아웃'
  • (즉 bottomPaddingView 그것을 이름)하여 시트 색상과 동일한 배경 색상과 (Programtically 또는 사용하여 스토리 보드)보기를 추가/작성합니다.
    -
  • 위치로 (제약 코드 구조하지 않은 다음, 그러나 단지 제약/앵커 관계를 나타내는 다음과 같은 제약 조건을 사용) - = bottomPaddingView.bottom self.view.bottom
    - bottomPaddingView.trailing = self.view한다. bottomPaddingView.leading = self.view.leading
    - - bottomPaddingView.top = self.view.safeAreaLayoutConstraint.bottom // 당신이 설정 한 경우 '안전 영역 레이아웃'
    - 또는 bottomPaddingView.top = 자기
    후행 .view.bottomLayoutguide // '안전 영역 레이아웃'을 사용 설정하지 않은 경우

이제는 페이드 애니메이션으로 액션 시정에 관한 bottomPaddingView의 숨기기/숨김을 취소하십시오.

1

여기 내 작은 확장 프로그램입니다. "마법의 숫자"태그로 추가 된보기에 액세스하지 못하도록 개선을 제안 할 수있는 사람 - 환영합니다!

extension UIViewController { 

private static let insetBackgroundViewTag = 98721 //Cool number 

func paintSafeAreaBottomInset(withColor color: UIColor) { 
    guard #available(iOS 11.0, *) else { 
     return 
    } 
    if let insetView = view.viewWithTag(UIViewController.insetBackgroundViewTag) { 
     insetView.backgroundColor = color 
     return 
    } 

    let insetView = UIView(frame: .zero) 
    insetView.tag = UIViewController.insetBackgroundViewTag 
    insetView.translatesAutoresizingMaskIntoConstraints = false 
    view.addSubview(insetView) 
    view.sendSubview(toBack: insetView) 

    insetView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true 
    insetView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true 
    insetView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true 
    insetView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true 

    insetView.backgroundColor = color 
} 

}