[swift] IGListKit에서 셀의 글꼴 설정하는 방법

IGListKit은 Swift에서 셀 기반의 데이터 표시를 위한 강력한 프레임워크입니다. IGListKit을 사용하여 셀의 글꼴을 설정하는 방법을 알아보겠습니다.

먼저, IGListKit에서 사용할 데이터 모델을 만들어야 합니다. 예를 들어, “User”라는 데이터 모델이 있다고 가정해봅시다. 이 데이터 모델은 사용자의 이름과 나이를 포함할 수 있습니다.

struct User {
    let name: String
    let age: Int
}

이제, IGListKit의 셀을 위한 뷰 컨트롤러를 만들어 보겠습니다. IGListKit에서는 IGListSectionController를 사용하여 셀의 레이아웃과 데이터를 처리합니다. IGListSectionController를 상속한 클래스를 만들고, IGListBindable 프로토콜을 구현합니다.

class UserSectionController: NSObject, IGListSectionController, IGListBindable {
    
    var user: User?
    
    func didUpdate(to object: Any) {
        user = object as? User
    }
    
    func cellForItem(at index: Int) -> UICollectionViewCell {
        // 셀을 생성하고 사용자의 이름과 나이를 표시하는 코드 작성
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "UserCell", for: index) as! UserCell
        cell.nameLabel.text = user?.name
        cell.ageLabel.text = "\(user?.age ?? 0)"
        return cell
    }
    
    func sizeForItem(at index: Int) -> CGSize {
        // 셀의 크기를 반환하는 코드 작성
        return CGSize(width: collectionView.bounds.width, height: 50)
    }
}

위의 예제에서 UserSectionController 클래스는 IGListSectionController 프로토콜을 구현하고, User 객체를 저장하고 활용합니다. cellForItem(at index: Int) 메서드는 UserCell을 반환하며, 여기에 사용자의 이름과 나이를 설정합니다.

마지막으로, 셀을 표시할 뷰 컨트롤러에서 UICollectionViewDelegateFlowLayout을 구현하고, IGListAdapter를 초기화합니다.

class ViewController: UIViewController, UICollectionViewDelegateFlowLayout {
    
    let users: [User] = [
        User(name: "John", age: 25),
        User(name: "Emily", age: 30),
        User(name: "Mike", age: 28)
    ]
    
    lazy var adapter: IGListAdapter = {
        let adapter = IGListAdapter(updater: IGListAdapterUpdater(), viewController: self)
        adapter.dataSource = self
        return adapter
    }()
    
    @IBOutlet weak var collectionView: UICollectionView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.adapter.collectionView = collectionView
        self.adapter.collectionViewDelegate = self
    }
}

extension ViewController: IGListAdapterDataSource {
    
    func objects(for listAdapter: IGListAdapter) -> [IGListDiffable] {
        return users
    }
    
    func listAdapter(_ listAdapter: IGListAdapter, sectionControllerFor object: Any) -> IGListSectionController {
        return UserSectionController()
    }
    
    func emptyView(for listAdapter: IGListAdapter) -> UIView? {
        return nil
    }
}

위의 예제에서 ViewController 클래스는 IGListAdapterDataSource 프로토콜을 구현하고, UserSectionController 객체를 반환하여 데이터를 표시합니다. objects(for listAdapter: IGListAdapter) 메서드에서는 데이터 소스로서 사용할 users 배열을 반환하며, listAdapter(_ listAdapter: IGListAdapter, sectionControllerFor object: Any) 메서드에서는 UserSectionController 객체를 생성하여 반환합니다.

이제, UserCell 클래스 내부에서 멋진 글꼴을 설정하거나, 셀의 스타일을 변경할 수 있습니다.

IGListKit은 셀의 글꼴 설정 외에도 다양한 기능을 제공합니다. IGListKit 공식 문서를 참조하여 더 많은 정보를 얻을 수 있습니다.

참고 자료: