본문 바로가기

💡 Today I Learned/오류 잡아라!9

[오류] 레이아웃 설정 후 빌드 무한루프에 빠져버렸다 ♾️ 평소와 똑같이 UI 만들고 SnapKit 사용해서 레이아웃을 설정하던 도중딱 코드 한 줄 바꿨는데, 빌드가 안되고 무한루프에 빠져버렸다(빌드 후 오류가 뜨는 것이 아닌... 무한으로 빌드가 진행됨)  처음에는 컴퓨터 문제인줄 알고 올게왔다 했는데 바꾼 코드 한 줄 주석처리 하니까 정상 빌드가 됐다여기서 의심된 원인 SnapKit을 사용하여 레이아웃 설정 시 UIScreen.main.bounds와 safeAreaLayoutGuide를 동시에 사용하면 안되는가?   를 토대로 찾아보았다  먼저, UIScreen.main.bounds는 디바이스 화면의 절대적인 크기를 반환한다.하지만 safeAreaLayoutGuide는 상위뷰와 관련된 상대적인 레이아웃을 기준으로 제공한다 서로 기준이 다르므로 SnapKit이.. 2025. 1. 2.
[오류] SnapKit 사용 시 No Such file or directory 프로젝트 생성 후 스냅킷만 깔아줬는데 오류 발생  프레임워크에서 SnapKit-Dynamic 삭제함  사라져라  잘됨 아오 2024. 12. 5.
[오류] UIButton 내부의 image 크기 조절 인스타그램의 좋아요 버튼처럼 UIButton을 image로 설정할 때가 종종 있다이번 프로젝트에서 버튼을 만들었는데, 버튼에 텍스트 없이 이미지로만 설정을 했고 크기를 키우려고 했는데 크기가 안 키워지는 이슈 발생🥲  하이어라키로 보면 버튼의 레이아웃 사이즈만 늘어나고 이미지인 하트는 크기가 변경되지 않은 모습을 볼 수 있다  먼저 버튼의 contentMode 를 scaleAspectFit으로 설정했다 • scaleAspectFit: 이미지의 원래 비율을 유지하며, 뷰의 크기에 맞추어 이미지가 축소 또는 확대된다 (=여백이 생길 수 있다) • scaleToFill: 이미지가 뷰의 크기에 정확히 맞도록 조정되지만, 이미지의 원래 비율이 유지되지 않는다 → 실패   두번째로 이미지의 엣지 인셋을 .zero.. 2024. 8. 30.
[오류] UITableViewCell에 UICollectionView 추가 오류 테이블뷰 셀에다가 컬렉션뷰를 넣어야 하는데, 슈퍼뷰에 정상적으로 추가되지 않는다는 오류가 발생했다  코드를 보면 제일 처름에 컬렉션뷰가 계산 프로퍼티로 선언되어 있는데,슈퍼뷰에 추가된 부분은 하단에 존재해서 앱의 생명주기와 맞지 않아서 오류가 생긴 거였음( = collectionView에 접근할 때마다 새로운 인스턴스가 생성)  lazy var로 초기화 시점을 늦춰주면 해결됨  정리 ---기존 방식(계산된 프로퍼티)• collectionView에 접근할 때마다 새로운 인스턴스가 생성되었기 때문에, addSubview()로 추가한 collectionView와 제약 조건을 설정하려는 collectionView가 서로 다른 인스턴스일 수 있음수정된 방식(lazy var)• collectionView가 처음 접.. 2024. 8. 27.
[오류] 테이블뷰 이벤트 발생 시 UI 작업이 중단되는 현상(스톱워치) 오류내용아래 영상과 같이 스톱워치에서 랩 기록 후 테이블뷰 스크롤 시 타이머가 중단됨!!  애플 공식문서를 확인해보니어떤 스레드에서 작업할지 설정 가능한 DispatchSourceTimer가 있다고 함https://developer.apple.com/documentation/dispatch/dispatchsourcetimer DispatchSourceTimer | Apple Developer DocumentationA dispatch source that submits the event handler block based on a timer.developer.apple.com  나는 지금 Timer을 이용해서 스톱워치 작업을 했는데 일단 바꿔줌  오류 발생  이벤트 발생 시 타이머가 중단되지 않게하기 위.. 2024. 8. 20.
[오류] TableView 라인이 오른쪽으로 쏠릴 때 🚨 오류내용 전에도 겪었던 문제인데, 테이블뷰로 데이터가 찍힐 때 라인이 오른쪽에 붙어있는 것    💫 해결 방법 1 .separatorInset.left = 0  를 줘서 왼쪽 inset을 0으로 줘버리면 아래 화면처럼 라인이 양쪽으로 딱 붙는 모습을 볼 수 있다   💫 해결 방법 2 아니면 아래 코드처럼 각각 Inset을 따로 줄 수도 있다 2024. 8. 19.