NotificationCenter의 removeObserver를 해야할까?
·
UIKit
음... 또 글을 쓰는 임정현씨...노티센터 오랜만에 쓰는 친군데요...removeObserver 어떻게 해야할까요?아라봅시다...문제 상황NotificationCenter에서 addObserver를 한 ViewController를 removeObserver를 해주어야하는지에 대한 논의가 있었다.문제 해결잠깐 생각해봤을 때 이것은 맞는 말이다!왜냐하면 코드상으로 addObserver를 할 때 self를 명시적으로 사용하기 때문이다.이러한 코드는 보통 메모리 낭비를 초래한다.NotificationCenter.default.addObserver( self, selector: #selector(keyboardWillHide), name: UIRespo..
무지성 MainActor를 붙인 상황에서 데이터가 로드되기 전에 뷰가 그려지는 문제 해결
·
UIKit
안녕하세요! 집주인의 얼굴천재 박효준입니다!MainActor를 여기저기 쓰다가 보니 문제가 발생한 부분을 공유드리고자합니다!가봅시다~~ ᕦ(ò_óˇ)ᕤ문제 상황input.sink { [weak self] event in switch event { case .viewDidLoad: do { self?.fetchMemorialHouse() try self?.fetchCategory() self?.output.send(.fetchedMemorialHouseAndCategory) } catch { self?.output.send(.fetchedFailure("데이터 로드 중 에러가 발생했습니다.")..
뷰 그리는 방식에 대한 논의(Factory vs MH커스텀 vs VC에서 설정)
·
UIKit
뷰를 그리는 컨벤션에 대해 심도있는? 논의를 하였다.다들 생각하는 것이 달라도 한번 맞출 필요가 있다고 판단하였다.아래는 날것.... 의 내용이다...문제 상황아래 3개 중에 뭘 선택할지UILabel을 생성하는 팩토리생성자로 모든 걸 받는 MHLabelUIFont만 커스텀 하고, UILabel을 써서 ViewController에서 설정문제 해결UILabel+ Factory생성만 한다면, 서브클래싱을 안하고 Factory로 생성 가능UILabel이라는 것을 알려서 UIKit관련 동작 외에 없음을 알릴 수 있음생성에 대해서 확장성, 유지보수성을 꾀할 수 있음UILabel관련 버그만 발생해서 디버깅 용이기능적인 측면에서의 확장성이 적음UI테스트에서 용이한가?MHLabelViewController에서 생성자 ..
CollectionViewCell들 간의 Drag & Drop 구현하기
·
UIKit
반갑습니다 집주인 Kyxxn 박효준입니당이번에는 CollectionView에서 Cell들 간의 Drag & Drop을 구현해볼 건데요,델리게이트들을 어떻게 사용했고 어떤 특성이 있는지 알아봅시당 문제 상황컬렉션 뷰의 셀들을 드래그 앤 드랍해야 할 일이 생겨서이에 대한 공부를 하고 정리해보려 한다 !문제 해결주요 메소드우리는 아래의 두 델리게이트 프로토콜을 사용할 것이고,델리게이트에서 총 3개의 메소드를 사용하여 드래그 앤 드랍을 구현할 거다.UICollectionViewDragDelegateUICollectionViewDropDelegate시작: collectionView(_:itemsForBeginning:at:)먼저 Drag 델리게이트의 메소드이다.처음 드래그가 시작될 때 호출되는 메소드로 말 그대로..
CALayer를 사용할 때 발생하는 메모리 크래시
·
UIKit
안녕하세요...!이번에도 글을 쓰고 있는 임정현입니다...저희 버튼에는 그림자가 들어가는데 말입니다...이 그림자를 뷰한테 줬다가 뺐어야하는데, 주는 거는 됐는데, 뺐을 때 문제가 생겼습니다...그래서 CALayer[카-레이어]를 쓸 때 저랑 같은 문제를 겪는다면 이 방법을 한번... 츄라이..!문제 상황그림자를 넣는데 CALayer때문에 에러가 계속 났다. 아니, 처음에는 CALayer에러인줄도 몰랐다. 아래 처럼 이상하게 에러가 발생했기 때문이다.문제 해결그래서 왜 발생하지.. 하면서 이것저것 ViewModel이 문젠가.... 컴바인이 문젠가... 하..... 왜지 하다가 CALayer를 딱 지우니까 오류가 안나서 여기서 뭔가 있다는 것을 느꼈다. (문제 발생 5시간만에) 그래서 removeFromS..
런타임 시점에 Constraint를 조절하여 애니메이션 구현하기
·
UIKit
반갑습니다 집주인들 팀원 박효준입니다 ! 본 편에서는 플로팅 버튼이 셀을 가려서이에 대한 버튼을 런타임 시점에 Constraint를 조절하여 애니메이션 구현한 내용을 적어보겠습니다! 그럼 레쯔고 〰️  문제 상황홈 화면에서 컬렉션 뷰를 통해 책들을 Flow하게 보여준다.그리고 책을 생성하기 위해서는 우측 하단의 Floating 버튼이 있는데,이 버튼이 마지막 행의 오른쪽 책을 가리기 때문에 유저에서 ux적으로 불편함을 줄 수 있을 것이라 생각했다.이 문제를 해결해 나간 과정을 서술해보겠다.문제 해결아이디어플로팅 버튼은 우측 하단에 계속 띄워진 채 존재한다.마지막 행의 오른쪽 셀이 문제기 때문에 팀원과 논의한 끝에 ‘컬렉션뷰의 맨 아래에 도달하면 버튼을 숨기면 좋겠다’고 결론이 났다.그래서 버튼을 깜빡거리..
iOS 15.0 이상에서 UIButton 안에 있는 이미지 사이즈 조절하기
·
UIKit
반갑습니다 집주인들 팀원 박효준입니다 ! 본 편에서는 iOS 15.0 이상에서 UIButton 안에 있는 이미지 사이즈를 조절하는 방법에 대해 알아보겠습니다 !UIButton.Configuration이 나온 뒤로 쉽지 않아졌는데,, 한 번 구현한 과정을 말해볼게요~ 그럼 레쯔고 〰️  문제 상황버튼에 레이아웃을 아무리 건드려도 버튼 안에 들어있는 이미지는 늘어나지 않는다..!버튼 안에 있는 이미지 사이즈 조절하는 방법 문제 해결개요현재 코드는 이렇게 버튼에만 레이아웃이 걸려있다.private let likeButton = UIButton(type: .custom)likeButton.setImage(.likeFill, for: .normal)likeButton.setAnchor( top: bookCove..