4월 1일 TIL (5skinRabbins)

이승원·2024년 4월 2일
0

TIL

목록 보기
56/75
post-thumbnail

그룹 프로젝트 (5skinRabbins)

  • 이번 프로젝트 주제는 키오스크이다. 우리는 모바일 용 키오스크 보단 배달앱에 가깝게 구현을 하기로 하였다.
  • 아래는 우리 프로젝트 SA이다 링크

나의 파트 (아이스크림 선택화면)

  • 나는 아이스크림 (파인트, 패밀리 등) 을 선택시에 아이스크림의 맛을 선택할 수 있는 화면을 구현했다.
  • 우선 위에 아이스크림 선택화면은 CollectionView로 구현했다.
  • 각각의 Item의 사이즈와 간격을 정하기 위해서 FlowLayout를 사용했다.
let flavorFlowLayout = UICollectionViewFlowLayout()
        flavorFlowLayout.sectionInset = UIEdgeInsets(top: 10, left: 0, bottom: 10, right: 0)
        flavorFlowLayout.minimumLineSpacing = 1
        flavorFlowLayout.minimumInteritemSpacing = 0
        flavorFlowLayout.scrollDirection = .horizontal
        flavorFlowLayout.itemSize = CGSize(width: Int(flavorCollectionView.frame.size.width / 3), height: Int(flavorCollectionView.frame.size.width / 3))
        flavorCollectionView.collectionViewLayout = flavorFlowLayout
  • 그리고 Paging Control을 통해, CollectionView가 Paging 될때마다 Indicator가 변하도록 바꿨다.
    func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
        let page = Int(targetContentOffset.pointee.x / self.flavorCollectionView.frame.width)
        self.pageControl.currentPage = page
    }
  • 아래 선택된 맛은 선택된 메뉴 (싱글,더블,파인트) 등등에 따라서 개수가 변한다.
  • 클릭시에는 삭제되고 (빈 이미지로 변경)
  • 이번 과제에서 새로운 기술은 UIMenu 기능이다. Apple 공식 문서

UIMenu

  • UIMenu의 생성자는 아래와 같다.
init(title: String, image: UIImage?, identifier: UIMenu.Identifier?,
 options: UIMenu.Options, children: [UIMenuElement])
  • Title : 메뉴 제목
  • Image: 이미지이지만 안나온다..
  • identifier : menu 의 identifer, nil 설정시 자동으로 identifier 설정
  • options: 추가 옵션
  • children : 메뉴 포함된 menu element,
    • children 구현은 아래와 같이할 수 있다.
      let family = UIAction(
              title: "하브갤런",
              image: UIImage(named: "Cherry Water Blast")!,
              handler: {[unowned self] _ in
                  self.selectedMenuButton.setImage(UIImage(named: "Cherry Water Blast")!, for: .normal)
                  self.selectedMenu.choice = 6
                  self.configureData()
                  self.selectedFlavorCollectionView.reloadData()
              })
          
          let Items = [single, double, pint, quater, halfGallon, family]
          
          return Items
  • UIbutton에는 menu attribute가 있다. menu attribute는 기본적으로 버튼을 꾸욱 눌럿을때 나타난다. 하지만 showsMenuAsPrimaryAction 을 사용하면, 그냥 클릭만으로도 사용할 수 있다.
let menu = UIMenu(title: "메뉴", children: items)
selectedMenuButton.menu = menu
selectedMenuButton.showsMenuAsPrimaryAction = true

앞으로

  • 다른 팀원들 하는 파트 도와주고, 데이터 전송의 대해서 다같이 논의를 해야한다.
profile
개발자 (진)

0개의 댓글