Trouble Shooting 13

collectionView 안 텍스트 길이에 따라 동적으로 cell 사이즈 조절하기

문자열의 사이즈에 cell의 상하좌우 inset을 더한 만큼을 cell을 그릴 때마다 width로 동적으로 할당하도록 flowLayout을 설정하였다. 코드는 아래와 같다. extension ViewController: UICollectionViewDelegateFlowLayout { func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { let topBottomInset: CGFloat = 10 let leadingTrailingInset: CGFloat = 20 let cellH..

Trouble Shooting 2022.08.22

[iOS] 디바이스 회전을 감지하는 notification

Trouble - 특정 라이브러리를 사용시, 화면이 회전되면 cell이 옆으로 밀리는 이슈가 있었다. - 라이브러리의 고질적인 문제로 라이브러리를 뜯어 고치지 않는 이상 해결이 불가능하였다. Shooting - 그래서 생각한 방법은 두가지 이다. 1. 화면 회전을 막는다. 2. 화면 회전을 감지하여 화면이 회전되는 시점에 데이터를 refresh 해주는 작업을 해준다. 만약 기회의도가 화면 회전이 가능하도록 되어있다면 특정 기능에 문제가 생긴다고 하여 기능을 막아버리는 것은 옳지 않다. 그래서 아래 코드의 some code... 부분에 데이터를 가지고 뷰를 refresh 해주는 코드를 추가하여 해결하였다. (그 반대의 경우라면 회전을 막으면 깔끔) 화면 회전을 감지하는 옵저버를 추가하는 코드는 다음과 같다..

Trouble Shooting 2022.08.16

같은 api 통신을 여러번 반복해서 다수의 데이터를 가져오고 싶을 때

Trouble 여러 지역의 날짜 정보를 같은 fetchWeatherInfo(woeid: ) 라는 메서드를 반복 실행하여 데이터를 가져오고 싶었다. 그리고 모든 지역의 날짜 정보를 모두 fetch 완료 하였을 때 tableView를 갱신해주고 싶었다. Shooting 지역 정보가 들어있는 locations 배열을 순회하며 dispatchGroup 을 사용하여 날씨정보를 fetch 해오는 메서드를 group에 담는다. group 안에 있는 메서드를 순차적으로 수행하며 모든 데이터를 fetch 해온 후 main queue에 알리고(notify) 로딩화면을 멈춘 후 tableView를 갱신해주었다. func fetchData(locations: [Location]) { let dispatchGroup = Dis..

Trouble Shooting 2022.05.10

최상단으로 스크롤 시에만 보이는 뷰 구현(아래로 스크롤 시 사라지는 뷰)

Trouble 영화 검색앱을 만드는데 최상단으로 스크롤 시에는 보이고, 아래로 스크롤 시 사라지는 뷰를 표현해주고 싶었다. 상단의 작은 뷰(SomeView)와 웹뷰로 화면이 구성되어있음 아래로 스크롤을 하면 안보이고, 다시 위로 스크롤하면 보이는 뷰를 넣고 싶었음 view의 상단 제약조건의 contentOffset을 빼주어 구현함. (함께 있는 뷰가 UIScrollView를 상속받고 있다면 아래의 방법으로 적용 가능) 구현 * SnapKit을 사용하여 제약조건을 설정하였습니다. class SomeView: UIView { // 변수 선언 var topConstraint: Constraint? = nil ... // 제약조건 설정 func setConstraints() { infoView.snp.makeC..

Trouble Shooting 2022.04.29

TableViewCell 안의 버튼 액션이 작동하지 않음

구현하고자 하는 기능 화면 진입 시 기존에 내가 설정한 성별 정보가 뜨고, cell 안의 버튼을 눌러 성별을 변경하고 화면을 벗어나면 변경된 성별을 서버에 전달해 저장하고자 한다. cell 구성 이슈 버튼 action을 분명히 추가해줬고 작동해야하는데 cell 만 눌리고 버튼이 눌리지 않았다. 원인 버튼을 cell의 contentView.addSubView() 했어야 했는데 cell의 view에 addSubView()를 하여서 주어서 버튼이 contentView 아래에 있어서 버튼이 눌리지 않았다. 해결 버튼을 contentView.addSubView() 에 넣어주었다. 그리고 실행해보니 버튼이 contentView 위로 올라와 있어 버튼 액션이 잘 작동하였다. 제대로 해준 것 같은데 컴포넌트가 안눌린다..

Trouble Shooting 2022.02.11

CollectionView cell 커스텀 하기 (해 달라는 대로 다 해줬잖아...) - iOS

한 줄에 2개의 cell을 보여주고 싶다면? 어떻게 스토리보드를 구성해야할까? . . . . [ 문제 상황 ] collectionView를 사용하면서 cell을 1줄에 2개씩 보여주고 싶었다. 그런데 아무리 cell 여백과 사이즈를 지정해줘도 계속 아래와 같이 떴다. collectionViewDelegateFlowLayout을 설정해줬는데도 왜 그러지.. 스토리보드의 문제인가 하고 [ TRY 1 ] 아래와 같이 xib 파일을 생성하여 cell을 커스텀 해주었다. 코드는 아래와 같이 적어주었었다. 그래도 결과는 똑같았다.... 왜지.. 너무 공감되어서 생각난 김에 가져왔습니다.. (욕이 많아서 가렸어요ㅎㅎ,, 많이 화나셨었나봄.) 아무튼. 2시간 정도 헤맸는데....ㅠㅠㅠ 내가 작성해주지 않은 부분이 있었..

Trouble Shooting 2021.11.24

[masksToBounds] view 위에 있는 레이블이 view의 너비에 맞게 잘리나요? 안잘리게 하고싶다면? - iOS

앞의 글의 샘플 프로젝트에 이어서 작성하였습니다. 참고해주세요! (앞의 프로젝트와 마찬가지로, configure() 함수 내부 코드만 변경하였습니다.) https://nareunhagae.tistory.com/39 [clipsToBounds] view안에 있는 imageView를 둥글게 하고 싶을 때 둘다 radius값을 주어야할까?? (+일부 모서 화면을 구성하다보면 view안에 컴포넌트들을 배치하는 경우가 있죠! 그럴 때 만약 아래 그림과 같이 배치했다고 했을 때 view와 imageView를 모두 다듬 고 싶을 때 어떻게 해야할까요?? 약간의 제약조 nareunhagae.tistory.com 위에서는 clipsToBounds 속성을 활용해서 view의 모서리를 다듬었을 때 view위의 imageVi..

Trouble Shooting 2021.10.23

[clipsToBounds] view안에 있는 imageView를 둥글게 하고 싶을 때 둘다 radius값을 주어야할까?? (+일부 모서리만 둥글게 하기) - iOS

화면을 구성하다보면 view안에 컴포넌트들을 배치하는 경우가 있죠! 그럴 때 만약 아래 그림과 같이 배치했다고 했을 때 view와 imageView를 모두 다듬 고 싶을 때 어떻게 해야할까요?? 약간의 제약조건과 이미지를 asset에서 하나 가져와 설정해주고 실행해보면 이런 모습입니다. 여기서 제가 이미지의 모서리를 둥글게 하고싶다! 하면? *참고* cardView : 갈색 부분에 해당하는 뷰 posterImageVIew : 사진이 출력되고 있는 이미지뷰 configure() : ui관련 설정 코드들을 묶어 함수로 분리한 것 아래에 나오는 코드들은 모두 configure() 함수 내에 작성한 부분들입니다. **** 위의 configure() 안의 코드 처럼 imageView의 cornerRadius 값을..

Trouble Shooting 2021.10.19

[cornerRadius] - 동그란 버튼을 만들고 싶을 때

원 모양 만들고 싶은데.. 외않되...★ 하는 당신. 잘 찾아 오셨습니다. 원 모양 버튼을 만들기 전에 cornerRadius를 가볍게 알아봅시다! button 속성에 접근할 때 " 내가만든버튼이름.layer.cornerRadius " 로 접근하여 CGFloat값을 지정해주면 직사각형의 모서리를 둥글게 깎을 수 있습니다. 공식 문서의 설명을 보면 ... layer의 배경에 사용하는 둥근 모서리를 그리는데 사용되는 반지름을 의미합니다. CGFloat값을 크게 줄 수록 더 굴절률이 크게 깎입니다. 아래는 radius값에 따라 둥글어진 모서리 정도를 보여줍니다! radius값을 주는 원리 예를 들어 radius값을 8을 준다고 합시다. 그러면 아래 그림처럼 사각형의 모서리에 지름이 8인 원을 그리고 원 밖으로..

Trouble Shooting 2021.10.18

[AutoLayout] StackView에서 내가 원하는 컴포넌트를 크게 하고 싶을 때 - iOS

저는 주로 모두 비율을 똑같이 배치할 때 스택뷰를 사용합니다. 그런데 아래 사진과 같이 같은 컴포넌트들을 배치하여 스택뷰에 넣었을 때 가끔 문제가 발생합니다. 위의 사진에서 보면 저는 Title이 아닌 Overview 레이블을 크게 만들고 싶었습니다. 그런데 스택뷰로 묶고 난 직후에 보면 위와 같이 묶입니다! (보기좋게 레이블 별로 background색상을 추가해보았습니다) 이럴때 조절해주어야 하는 속성이 인터페이스 빌더에 있는 Content Hugging Priority, Content Compression Resistance Priority 입니다! 이름만 보면 뭔말이야 싶죠..? 두 속성에 대해 간단한 설명을 적어본 후 아래쪽에 해결방법을 적어두었습니다. (결과만 보고싶으신 분들은 아래쪽으로 스크롤..

Trouble Shooting 2021.10.13
반응형
1 2