xcode 8에서 frame size와 bound, border가 적용이 안될때

개발자에게 있어서 ios의 업데이트는 곧 xcode를 업데이트해야함을 의미합니다.


OS나 개발툴을 업데이트 한다는건 아무래도 개발자에게 있어서 또하나의 일이죠.


새버전에서 제대로 동작하지 않는 코드를 찾아내서 수정해야하고 뭐 그런일들.


가끔 원인도 모르고, 밑도끝도없이 안되는 기능들이라도 있으면 비생산적인일에 엄청난 시간이 소모됩니다 ㅠ



이번에 xcode8로 업데이트를 하고 다른 문제는 없는지 체크하는 중에 굉장한 삽질을 했네요 ㅠ


저처럼 고생하는 분이 없기를.. ㅠ



xcode 8로 업데이트 되면서 가장 큰 변화는 스토리보드의 줌 방식이 변경되었다는 겁니다.


전에는 줌상태가 직접 줌상태를 변경하지 않는한 바뀌지 않았는데


이제는 어떤 컴포넌트를 선택하느냐에 따라서 xcode 가 알아서 줌모드를 변경합니다.



은근히 불편하더라고요...


게다가 이거때문인지 스토리보드가 전보다 더 느려졌습니다.


제 구 맥북에어로는 스토리보드 로드하는데 너무 오래 걸리네요.




자 이제 본격적으로 제가 삽질한 내용은 다음과 같습니다.



xcode8에서 빌드한 앱에서 레이아웃이 망가지는 것들이 있어서 보니깐


1. frame size를 제대로 인식하지 못해서 특정 뷰의 크기가 엄청나게 크게 나온다던가


2. 특정 view의 bound를 제대로 인식하지 않거나


3. collectionviewcell, tableviewcell에 포함된 뷰가 정상적으로 표시되지 않는 현상


입니다.



위에서 언급한 1,2,3번이 xcode8에서의 줌모드 변환과 관련이 있습니다.



이제는 viewDidLoad 에서 렌더링된 viewconfroller의 frame의 사이즈나 특정 뷰 크기를 정상적으로 인식하지 못합니다.


그래서 viewDidLoad에서 특정 view의 크기를 불러온 다음에 이 크기에 맞춰 상대적으로 다른 뷰의 크기를 조절했다면


이제 그 조절하는 위치를 변경해야합니다.


viewDidLayoutSubviews 에서 frame사이즈를 읽어서 작업하시면 됩니다.



그 다음문제는 tableviewcell, collectionviewcell에서의 문제인데



- (void)awakeFromNib {

    [super awakeFromNib];

    

    [self layoutIfNeeded];

}


cell의 awakeFromNib에


layoutIfNeeded를 호출해주시면 됩니다.





저작자 표시
신고

| 1 | ··· | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | ··· | 1745 |