iPhone X에서 화면 하단에 View를 고정으로 배치하고 있으면 수수께끼의 여백이 태어났으므로, 노력해 자력으로 채우다

기존의 앱을 평소처럼 개수하고 있었습니다만…
iPhone X에서 UITabBarController 등을 사용하지 않는 화면을 보면,
화면의 최하부에 고정하고 있는 view아래에 수수께끼의 여백이 발생하고 있다! ?

솔직히, 지금 갱감 넘치는 대응이지만 앞으로의 대응을 잊지 않도록 메모적으로!
단말을 옆으로 보았을 때의 일은…

원인!



home 버튼이 사라졌기 때문입니다!

지금까지는 SafeArea의 최하부에서 높이 XX의 UIView를 배치해보고 싶은 느낌이었습니다만, SafeArea보다 더욱 아래가 탄생해 버렸네요…



이것은 에뮬레이터의 safari 왜 채워지고 있습니다만( ˘ω˘)

대책 1



@ichimots 씨가 코멘트에서도 지적대로 화면 하단에 고정하고 있는 view의 bottom을 SuperView.bottom으로 한다!
이것이 가장 간단합니다 ......!
storyboard의 설정을 재작성하는 것만으로도 되어 버리므로 간편! 진짜 추천!

대책 2



SuperView의 bottom을 전제로 하면, 지금의 구성이라고 하의 바와 view가 급접근해 버리는 것이 싫다고 하는 틈새 수요용!
이 속성을 활성화하면 OK! 같은 편리한 솔루션을 찾을 수 없습니다
SafeArea 이후의 부분의 높이를 취득해, 최하부에 배치하고 있는 UIView를 농락한다고 하는 것도 생각했습니다만, 그것도 조금 싫기 때문에.

화면 최하부의 UIView아래에 같은 배경색의 UIView를 또 하나 배치해, 화면의 맨 아래까지 늘린다……라는 바람으로 하면 다른 단말에서도 영향 없이 대응할 수 있는 것은? 라고 생각했으므로, 이 방법으로 대응해 보려고 생각합니다.

구현



for_iphonex.swift
class BottomFillView: UIView {
    func add(_ baseVC: UIViewController, bottomView: UIView) {
        self.backgroundColor = bottomView.backgroundColor

        baseVC.view.addSubview(self)

        constrain(self, bottomView) { view, bottomView in
            view.top == bottomView.bottom
            view.trailing == view.superview!.trailing
            view.leading == view.superview!.leading
            view.bottom == view.superview!.bottom
        }
    }
}

라는 확장 UIView를 준비해 보았습니다.

yobidashi.swift
override func viewDidLoad() {
    super.viewDidLoad()
    BottomFillView().addX(self, bottomView: bottomView)
}

이런 느낌으로 불러 주면 새롭고, 순백이었던 화면 하단이 같은 색으로 채워지고 있다!

라고, 여기까지 했습니다만… … storyboard만으로 대책할 수 있는 방법이!

대책 3


  • 하단 뷰의 bottom을 SuperView.bottom으로 설정
  • SafeArea.bottom과 마이너스를 설정하고 싶은 높이로 맨 아래의 view의 top을 설정한다

  • 어째서 이런 간단한 것을 깨닫지 못했을 것이다…
    사람으로부터 지적을 받을 수 있는 Qiita에게 감사 밖에 없다

    감상



    개인적으로는 홈 버튼이 있던 쪽이 사용하기 쉬운…
    아니 이런 편이 편하지 않아? 같은 지적도 있으면 꼭 꼭

    좋은 웹페이지 즐겨찾기