Jimmy's iOS

iOS) Cosmos - Star Rating Library 본문

iOS

iOS) Cosmos - Star Rating Library

Jimmy Youn 2021. 5. 31. 01:44

프로젝트를 하면서 별점을 주는 것을 해야했다. 별점 예시를 찾다가 cosmos 라는 라이브러리가 있어서 연습을 해봤다.

 

 

 

import UIKit
import Cosmos
import SnapKit

class ViewController: UIViewController {
  
  //MARK: - Properties
  lazy var cosmosView : CosmosView = {
    var view = CosmosView()
    view.settings.updateOnTouch = true // 클릭 가능 하게 true 가 defualt, false 이면 터치 안됨
//    view.settings.filledImage = UIImage(named: "")?.withRenderingMode(.alwaysOriginal) // filledImage 설정 가능
//    view.settings.emptyImage = UIImage(named: "") // emtyImage 설정 가능
    view.settings.totalStars = 5
    view.settings.starSize = 30// height
    view.settings.starMargin = 3.3 // distance each star
    view.settings.fillMode = .full  // precise 는 완전 소수점 까지
    
    view.text = "Rate me"
    view.settings.textColor = .gray
//    view.settings.textFont
    view.settings.textMargin = 10 // distance between star
    return view
  }()

  //MARK: - Lifecycle
  override func viewDidLoad() {
    super.viewDidLoad()
    setUI()
  }

  //MARK: - Functions
  private func setUI() {
    view.backgroundColor = .white
    
    view.addSubview(cosmosView)
    
    cosmosView.snp.makeConstraints {
      $0.center.equalToSuperview()
    }
    
    cosmosView.didTouchCosmos = { rating in
      print("Rated : \(rating)")
    }
  }

}

  • settings.updateOnTouch  :  default 값은 true,  false 를 주면 touch 안됨 
  • settings.filledImage : 색이 칠해진 이미지를 넣을 수 있다. 
  • settings.emtyImage : 빈 이미지를 넣을 수 있다. 
  • settings.totalStars : 총 별 갯수 
  • settings.starSize : 별점 크기 
  • settings.starMargin : 각각 별점 사이 margin 
  • settings.fillMode : 별점 보여지는 방법
    • full : 완전 한개씩 
    • half : 0.5 
    • precise : 터치 한 곳까지 정밀하게 소수점으로 
  • text : 별점 옆에 글 생성 가능 
  • settings.textColor
  • settings.textMargin 

 

 

 

 

evgenyneu/Cosmos

A star rating control for iOS/tvOS written in Swift - evgenyneu/Cosmos

github.com