2017-10-27 5 views
1

화면 상단에 표시되고 잠시 후 사라지고 나중에 다시 표시 될 수있는 정보보기를 만들고 싶습니다.iOS - 화면 상단에 숨겨진 UIView

내가 UIView의를 생성하고 설정 한 제약 :

topInfoView.leadingAnchor.constraint(equalTo: mainView.leadingAnchor) 
topInfoView.trailingAnchor.constraint(equalTo: smainView.trailingAnchor) 
topInfoView.heightAnchor.constraint(equalToConstant: HEIGHT) 

닫힌 상태 : topInfoView.topAnchor.constraint (EqualTo가 : mainView.topAnchor 일정 : -height)

열기 상태 : topInfoView. topAnchor.constraint (equalTo : mainView.topAnchor, 상수 : 0)

여기에서 mainView은 주 UIViewCcontroller입니다.

나는 내 사용자 높이 + "상태 표시 줄 높이"(배터리가있는 바, Wi-Fi 등)로 HEIGHT을 설정했습니다. 문제는 상태 표시 줄 높이가 0이고 topInfoView가 잘못 배치 된 경우입니다. 나는이를 통해 "상태 표시 줄 높이"를 취득하고 있습니다 :

func statusBarHeight() -> CGFloat { 
    let statusBarSize = UIApplication.shared.statusBarFrame.size 
    return Swift.min(statusBarSize.width, statusBarSize.height) 
} 

하지만 때로는하지 작업 (뷰 inited는 없습니다?) 나는 또한 상태 표시 줄 다르게 해결된다 새로운 아이폰 X, 확실하지 않다. 높이를 계산하지 않고 다른 방법이 있습니까?

+0

그것을 보여 'viewDidLayoutSubview'에서 얻으십시오 – Tj3n

+0

@ Tj3n 왜 다른 해결책을 찾고 있는데, 그것은 바로 상태 표시 줄 높이에 "기반"이 없습니다. –

답변

1

수직 스택보기를 사용하십시오. tableView 및 세로보기를 차례로 세로로 배치하십시오. 테이블 뷰의 높이를 설정합니다. 스택보기의 배포 속성을 으로 채 웁니다. 테이블 뷰의 출력을 만듭니다. 이 배열을 사용하면 테이블 뷰를 숨길 때 뷰가 전체 영역을 채 웁니다. 다시 isHidden 속성을 테이블보기의 false로 설정하면 테이블보기 및보기가 원래 배열로 나타납니다. 탁월한 사용자 경험을 제공하기 위해 표보기를 숨기거나 표시하면서 애니메이션을 만들 수 있습니다.

+0

샘플 코드를 게시 해주십시오. 나는 꽤 tableView을 따르지 않는다. –

+0

죄송합니다. 나는 그것의 탁자를 생각했다. 그냥 5 분을 기다려. –

+0

[샘플 프로젝트가있는 github 저장소] (https://github.com/keshavRaj/HideableInfoViewForStackOverflowAnswer.git)를 확인하십시오. –

0

당신은 topInfoView.isHidden = true 그것을 숨기기 위해 사용해야하고 viewDidLoad` 후 잘못 될 수`에서보기 높이를 얻으려고 노력하는 경우 레이아웃이 완성되지 않았기 때문에 다음 topInfoView.isHidden = false 다시

관련 문제