2017-02-02 6 views
0

이것이 AutoLayout 또는 Xcode의 버그인지는 모르겠지만 스토리 보드에있는 장치와 크기가 다른 장치에서 응용 프로그램을 실행하면 요소가 잘못된 크기를 채택하고 있습니다.UITableviewcell 너비가 화면을 채우지 못함

즉, iPhone SE로보기 선택 및 iPhone 7 이상에서 응용 프로그램 실행 내 tableview의 크기는 iPhone SE 화면의 너비입니다.보기를 다시로드하면 iPhone 7 + 화면의 너비가 적용됩니다.

그냥 메모뿐만 아니라 테이블보기 고정 너비가없는 및 ​​0 간격으로 위쪽, 아래쪽, 왼쪽 및 오른쪽 고정되어 또한 코드에서 프로그래밍 방식으로 셀의 높이를 변경 해요 그것도 전혀 영향을 미칠 수 있습니다.

비디오 : https://drive.google.com/open?id=0B0QLbDLfJn6_YzljUGg4RTUwaTg

+0

에 self.view.layoutIfNeeded보십시오 ... 나는 당신의 질문이 버그인지 가정? – jabbathehutt1234

+0

보기를 어떻게 다시로드합니까? – NRitH

+0

예, 탭 기반 응용 프로그램입니다. 탭 아이콘을 선택하여 다른보기를 얻었을 때 돌아가서 1 초 동안 정렬하면 비디오가 첨부됩니다. – Tunds

답변

0

나는 이것을 다시 수없는 것. Xcode 및 개발자 도구 (softwareupdate --install -a)에 대한 모든 업데이트를 이중으로 확인하는 것이 좋습니다.

그렇지 않은 경우 Xcode를 다시 시작하십시오.

편집 : 답글을 무시하고 Mike Sand's 게시물을 읽으십시오.

+0

XCode가 최신이면서 업데이트가 필요하지 않습니다. – Tunds

+0

이상 함. 어쩌면 캐시 지우기? – jabbathehutt1234

+1

이것은 xcode 버그가 아닙니다. 'viewDidLoad'에 너비'self.view.frame.size.width'의 서브 뷰를 추가하여 이것을 재 작성할 수 있습니다. 하위 뷰는 Interface Builder에서 폭이 무엇이든간에 항상 갖습니다. –

2

xib (또는 스토리 보드)에서 생성 된 뷰는 뷰 계층에 추가되기 전에 작성 될 때 IB 프레임 값을 갖습니다. 그래서 당신이 설명하는 경우 아마도 뭔가가 레이아웃 프로세스의 일부가되고 크기가 조정되기 전에 xib에서로드 된보기에 액세스하는 것일 것입니다.

이렇게하면 멀리 나가서 돌아올 때 왜 고정되어 있는지 설명 할 수 있습니다. 처음에는 값이 최종 결정되기 전에 값을 얻었지만 두 번째 값은 이미 최종적이며 정확합니다.

보기 컨트롤러의 경우 viewDidLoad()에서 호출하거나보기의 경우 awakeFromNib() 또는 initWith(coder:)이라는 레이아웃 코드가 원인 일 수 있습니다. viewDidLoad()에서 호출 된 레이아웃 코드는 특히 문제가되는데, 이는 iPhone 5s까지는 좋았지 만 이제는이 문제를 일으킬 수 있습니다.

정확하게이 문제를 정확히 말할 수는 없습니다. 비디오에서 볼 수있는 NSLog 문에서 문제는 "weather view width"라는 코드가 무엇이든간에 발생합니다. 이는 레이아웃 프로세스에서 너무 일찍 호출됩니다. viewWillAppear 또는 viewWillLayoutSubviews으로 이동하여 올바른 값이 어떤 계산이든지 상관없이 준비가되었는지 확인해야합니다. 희망이 도움이됩니다.

+0

좋아 보인다.감사! – jabbathehutt1234

0

가있는 viewDidLoad 또는 viewWillAppear 매우 이상한