감자주먹밥
close
프로필 배경
프로필 로고

감자주먹밥

  • 분류 전체보기 (83)
    • IOS (1)
      • Swift (14)
      • RxSwift (2)
      • UIKit (31)
      • SwiftUI (9)
      • Test (4)
    • 코퉤엣 (12)
    • Git (2)
    • Android (8)
  • 홈
  • 태그
  • iOS
  • Github
  • 방명록

📦공통된 CollectionView 재사용을 위한 Adpater 패턴 적용기

UI 재사용에 대한 고민Home, PastPin, Setting에 들어가는 데이터나 동작이 동일하기에 이를 통합해 재사용할 방법을 고민했다.어댑터 패턴collectionView 서브클래싱 서브클래싱이 가장 익숙한 방식이었지만, 어댑터 패턴을 선택했다.그 이유는 데이터가 setting 화면에서는 동일하지 않을 수 있고, 그에따른 확장이 필요한 경우,datasource나 delegate를 기본을 사용하면서도 다른 동작이 필요할 때 따로 정의해서 주입해줘 선택적으로 사용이 가능하기 때문이다.그리고 무엇보다 VC에 책임을 덜 수 있는게 좋았다. (MVC라서...) 우린 MVC 패턴을 사용했는데 여기서 컬렉션뷰 만들때 레이아웃, 델리게이트, 데이터 소스, 데이터 관리 등 을 VC가 맡았어야하는데, 그걸 Adapt..

  • format_list_bulleted IOS
  • · 2025. 4. 25.
  • textsms
[Swift] weak self 를 언제 쓰는게 좋을까?

[Swift] weak self 를 언제 쓰는게 좋을까?

지금까지 순환참조는 안돼~ 메모리 릭 안돼~ 하면서 무작정 사용했던 weak self.하지만 유튜버의 이 질문에 대한 영상을 보고 다 같아 붙일게 아니라, weak self 역시 어떻게 사용할지 고려하고 작성해야한다는걸 알았다. 그 내용을 정리해보자이 유튜버의 영상을 보고 정리했습니다. 먼저 예제 코드.class ViewModel { func format(_ value: Int) -> String { return "number: \(value)"} var handler: ((Int) -> Void)? = nil func code() { // 1. let formatted = [1, 2, 3].map { [weak self] item in ..

  • format_list_bulleted IOS/Swift
  • · 2025. 3. 10.
  • textsms
[UIKit] CollectionView Cell 에 cornerRadius & shadow 같이 적용하기

[UIKit] CollectionView Cell 에 cornerRadius & shadow 같이 적용하기

Cell을 생성하고 conerRadius, shadow를 같이 적용해서 실행해보니 제대로 적용되지 않는 문제를 겪었다.문제점cornerRadius를 적용할땐 clipsToBound를 true로 해줘야하고,shadow를 적용할 땐 masksToBounds 를 false로 해줘야한다. 이 두가지를 하나의 뷰에서 하면 안되는것이다!먼저 실행된 기능만 적용되고 후에 적용한것은 되지도 않는다. 그럼 어떻게 할까?해결먼저 해결한 화면을 보자.하나의 뷰에 두가지 기능을 사용할 수 없으니 2개의 뷰를 사용해 각각 적용하는 방식을 선택했다. Cell의 경우 기본적으로 ContentView가 존재하기 때문에...1. ImageView에 cornerRadius 적용2. contentView에 shadow 적용 그리고 con..

  • format_list_bulleted IOS/UIKit
  • · 2025. 3. 4.
  • textsms
[UIKit] TableView Dynamic Height 사용하기

[UIKit] TableView Dynamic Height 사용하기

다음과 같은 화면을 섹션을 나눠서 TableView로 만들었는데 리뷰가 길거나 영화 제목?이 길면 그에따라 셀도 커졌으면 좋겠는데.. 하니까 바로 Dynamicheight를 설정할 수 있는걸 알고 사용한걸 정리해보았다.Dynamic Height in TableView tableView = UITableView(frame: view.bounds, style: .insetGrouped)// dynamic height 설정tableView.rowHeight = UITableView.automaticDimension// 대략적인 높이를 설정해줘야함tableView.estimatedRowHeight = 300설정은 간단하다 추가로 대략적인 높이를 설정해줘야한다. Cell 설정도 어렵지 않았다.class Movie..

  • format_list_bulleted IOS/UIKit
  • · 2025. 3. 4.
  • textsms

[UIKit] Long Press ContextMenu 띄우기 (TableView & CollectionView)

TableView, CollectionView 에서 Delegate 사용iOS 13+ 부터 가능함!TableView or CollectionView는 따로 만들었다는 가정하에 Delegate를 사용하는 법만 확인 UITableViewDelegate or UICollectionViewDelegate에 있는 contextMenuConfigurationForItemsAt 함수를 정의해 만들 수 있다. 예제는 CollectionView지만 TableView도 동일하게 사용이 가능함!extension HomeViewController: UICollectionViewDelegate { func collectionView(_ collectionView: UICollectionView, contextMenuCon..

  • format_list_bulleted IOS/UIKit
  • · 2025. 3. 4.
  • textsms
KeyPath 알아보기 + KVC/KVO

KeyPath 알아보기 + KVC/KVO

KeyPathSwiftUI 에서 List에서 사용해보고, Combine에서도 assign 메서드에서 사용을 했었던 KeyPath를 알아보자Swift4!! 에 도입된 기능!!객체의 프로퍼티나 서브스크립트에 대한 경로를 type-safe하게 참조하는 기능컴파일 타임에 프로퍼티에 접근하거나 수정할 수있고, 코드 안전성과 가독성을 높여준다.\\.KeyPath는 역슬래쉬 타입이름.프로퍼티 와 같은 형태로 사용된다.struct A { var value: Int = 10 }class Person { var name: String = "NAME"}let a1 = A()print(a1[keyPath: \\.value])let a2 = A()let path = \\A.value print(a2[keyPath:..

  • format_list_bulleted IOS/Swift
  • · 2025. 2. 23.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • ···
  • 11
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (83)
    • IOS (1)
      • Swift (14)
      • RxSwift (2)
      • UIKit (31)
      • SwiftUI (9)
      • Test (4)
    • 코퉤엣 (12)
    • Git (2)
    • Android (8)
최근 글
인기 글
태그
  • #백준
  • #tableView
  • #UIKit
  • #Kotlin
  • #android
  • #programmers
  • #ios
  • #swiftUI
  • #코딩테스트
  • #SWIFT
최근 댓글
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바