2017-02-10 7 views
0

사진,지도 및 콘텐츠를 표시하는 swift 앱을 디자인 중입니다. 모두 UITableView 헤더에 있습니다. 내가 아이폰 5에 대한 응용 프로그램을 실행하면iphone 5 및 iphone 6에서 앱을 실행하는 동안 내 구속 조건이 레이아웃을 다르게 만드는 이유는 무엇입니까?

, 그것은 다음과 같습니다

enter image description here

과 :

enter image description here

노란색 필드는 다음과 같은 제약이있는 텍스트이다 :

enter image description here

이것은 내가 아이폰 6를 실행하면, 내가 볼, 그러나 아이폰 5에 잘 보이는 : 그 두 가지 견해가 다른 이유

enter image description here

내가 이해가 안 돼요. 기본적으로 데이터 헤더보기를 (예를 들어, 사용자 이름, 텍스트, 사진을 채운다) 웁니다

defineHeaderView() 

:

지금, 내 코드에서, viewDidLoad()에서 나는 방법에 대한 요구가있다. 보기를 않는 이유

enter image description here

당신이 날 설명 할 수 다음 storyboard에서

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 
    sizeHeaderToFit() 
} 

func sizeHeaderToFit() { 
    let headerView = myTable.tableHeaderView! 

    headerView.setNeedsLayout() 
    headerView.layoutIfNeeded() 

    let height = headerView.systemLayoutSizeFitting(UILayoutFittingCompressedSize).height 
    var frame = headerView.frame 
    frame.size.height = height 
    headerView.frame = frame 

    myTable.tableHeaderView = headerView 
} 

내가 UITableView 내부보기로 headerview을 정의

은 또한 코드 블록을 두 화면에서 다릅니 까?

더 나은 통찰력을 제공하기 위해, 여기에 다른 제약 조건은 다음과 같습니다

지도 : 여기

enter image description here

과 배경 사진 :

enter image description here

가있다 다음 제약 조건 :

enter image description here

+0

난 당신의 imageViews에 문제가 있다고 생각합니다. iPhone 5 화면이 더 얇아지고 이미지와 구속 조건의 크기에 따라 (그리고 clipSubviews가 true/false로 설정된 경우) 이미지가 매우 다르게 보입니다. – PeejWeej

+0

다른 장치에서 뷰 계층을 디버깅하여 실제 프레임/제약 조건이 무엇인지 확인해야합니다. – PeejWeej

+0

뷰 이름 및 기타 제약 조건에 대한 정보가 충분하지 않습니다.이것은 단지 가정입니다. 보기 높이 (노란색 중 하나)의 제약 조건은 "더 크거나 같음"과 관련이 있습니다. 두 번째 제약 조건에 따르면 뷰의 윗부분은 부모 상위 644 포인트 아래에 있어야합니다. 정적 값입니다. 따라서 서로 다른 크기 (높이)를 가진 장치의 경우보기가 신장됩니다. –

답변

0

UILabel의 상위 제약 조건을 제거하십시오.

+0

상위 제약 조건을 제거하면 내 'UILabel'이 화면 맨 위로 이동합니다 ... – user3766930

+2

이것이 효과적인 답변인지는 모르겠지만 설명을 추가하면 * 더 나은 * 대답이 될 것입니다 * 왜 *이 문제가 해결됩니다. – dfd

+0

방금 ​​원래 질문에 제약 조건에 대한 추가 정보를 입력했습니다. – user3766930