Skip to content

Commit

Permalink
[Add] #288 - 선호장르 버튼 View 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
Naknakk committed Oct 1, 2024
1 parent c71754b commit 1acde59
Show file tree
Hide file tree
Showing 3 changed files with 141 additions and 0 deletions.
4 changes: 4 additions & 0 deletions WSSiOS/WSSiOS.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,7 @@
39D4A5E02BDF746C004FC834 /* NovelGenre.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39D4A5DF2BDF746C004FC834 /* NovelGenre.swift */; };
39D4A5E42BDF90FB004FC834 /* NovelDetailHeaderReviewResultView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39D4A5E32BDF90FB004FC834 /* NovelDetailHeaderReviewResultView.swift */; };
39DFB0ED2CABDFC000F87951 /* OnboardingGenrePreferenceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39DFB0EC2CABDFC000F87951 /* OnboardingGenrePreferenceView.swift */; };
39DFB0EF2CABE47B00F87951 /* OnboardingGenreButtonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39DFB0EE2CABE47B00F87951 /* OnboardingGenreButtonView.swift */; };
39E8FD902C742CE100AD6F30 /* NovelDetailHeaderReadStatusButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39E8FD8F2C742CE100AD6F30 /* NovelDetailHeaderReadStatusButton.swift */; };
39E8FD922C743D8000AD6F30 /* NovelDetailHeaderReadInfoButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39E8FD912C743D8000AD6F30 /* NovelDetailHeaderReadInfoButton.swift */; };
39EF97AC2B53E43800D2148B /* Lottie in Frameworks */ = {isa = PBXBuildFile; productRef = 39EF97AB2B53E43800D2148B /* Lottie */; };
Expand Down Expand Up @@ -601,6 +602,7 @@
39D4A5DF2BDF746C004FC834 /* NovelGenre.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NovelGenre.swift; sourceTree = "<group>"; };
39D4A5E32BDF90FB004FC834 /* NovelDetailHeaderReviewResultView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NovelDetailHeaderReviewResultView.swift; sourceTree = "<group>"; };
39DFB0EC2CABDFC000F87951 /* OnboardingGenrePreferenceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingGenrePreferenceView.swift; sourceTree = "<group>"; };
39DFB0EE2CABE47B00F87951 /* OnboardingGenreButtonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingGenreButtonView.swift; sourceTree = "<group>"; };
39E8FD8F2C742CE100AD6F30 /* NovelDetailHeaderReadStatusButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NovelDetailHeaderReadStatusButton.swift; sourceTree = "<group>"; };
39E8FD912C743D8000AD6F30 /* NovelDetailHeaderReadInfoButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NovelDetailHeaderReadInfoButton.swift; sourceTree = "<group>"; };
39F686FB2C6F5BB90065999F /* NovelDetailInfoReviewKeywordView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NovelDetailInfoReviewKeywordView.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1453,6 +1455,7 @@
3931020D2CA5D6CB002CBEA0 /* OnboardingNicknameView.swift */,
393CAC432CA72760004B4DB6 /* OnboardingBirthGenderView.swift */,
39DFB0EC2CABDFC000F87951 /* OnboardingGenrePreferenceView.swift */,
39DFB0EE2CABE47B00F87951 /* OnboardingGenreButtonView.swift */,
393CAC3F2CA6D10C004B4DB6 /* OnboardingProgressView.swift */,
393CAC472CA72A2E004B4DB6 /* OnboardingGenderButton.swift */,
393CAC3B2CA6AFD8004B4DB6 /* OnboardingBottomButtonView.swift */,
Expand Down Expand Up @@ -3096,6 +3099,7 @@
CD2D0AB92C7F0279007CF1F1 /* NovelReviewStatusCollectionViewCell.swift in Sources */,
2CCBFA042B4DD73D00D787C2 /* MyPageTallyView.swift in Sources */,
2C2491812B4ADC000096F255 /* StringLiterals.swift in Sources */,
39DFB0EF2CABE47B00F87951 /* OnboardingGenreButtonView.swift in Sources */,
39F850712C2D39E000E93EBC /* NovelDetailInfoPlatformView.swift in Sources */,
39F850642C28202300E93EBC /* NovelDetailInfoView.swift in Sources */,
B9E566052C0452E500DB51FF /* NormalSearchResultView.swift in Sources */,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "icOnboardingCheck.svg",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
//
// OnboardingGenreButtonView.swift
// WSSiOS
//
// Created by YunhakLee on 10/1/24.
//

import UIKit

import SnapKit
import Then

final class OnboardingGenreButtonView: UIView {

//MARK: - Properties

let genre: NewNovelGenre

private let buttonHeight: CGFloat = 83

//MARK: - Components

private let genreButton = UIButton()
private let genreImageView = UIImageView()
private let checkImageView = UIImageView()
private let genreLabel = UILabel()

//MARK: - Life Cycle

init(genre: NewNovelGenre) {
self.genre = genre
super.init(frame: .zero)

setUI()
setHierarchy()
setLayout()
}

required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

//MARK: - UI

private func setUI() {
genreButton.do {
$0.backgroundColor = .wssGray50
$0.layer.cornerRadius = buttonHeight/2
$0.layer.borderColor = UIColor.wssPrimary100.cgColor

genreImageView.do {
$0.image = genre.image
$0.contentMode = .scaleAspectFit
$0.isUserInteractionEnabled = false
}

checkImageView.do {
$0.image = .icOnboardingCheck
$0.contentMode = .scaleAspectFit
$0.isUserInteractionEnabled = false
$0.isHidden = true
}
}

genreLabel.do {
$0.applyWSSFont(.title3, with: genre.withKorean)
$0.textColor = .wssGray300
}
}

private func setHierarchy() {
self.addSubviews(genreButton,
genreLabel)
genreButton.addSubviews(genreImageView,
checkImageView)
}

private func setLayout() {
genreButton.snp.makeConstraints {
$0.top.equalToSuperview()
$0.horizontalEdges.equalToSuperview()
$0.size.equalTo(buttonHeight)

genreImageView.snp.makeConstraints {
$0.center.equalToSuperview()
$0.size.equalTo(44)
}

checkImageView.snp.makeConstraints {
$0.centerY.equalToSuperview()
$0.size.equalTo(44)
}
}

genreLabel.snp.makeConstraints {
$0.top.equalTo(genreButton.snp.bottom).inset(10)
$0.centerX.equalToSuperview()
$0.bottom.equalToSuperview()
}
}

// MARK: - Custom Method

func updateButton(selectedGenres: [NewNovelGenre]) {
let isSelected = selectedGenres.contains(genre)

genreButton.do {
$0.backgroundColor = isSelected ? .wssPrimary50 : .wssGray50
$0.layer.borderWidth = isSelected ? 2 : 0
}

checkImageView.isHidden = !isSelected
genreImageView.isHidden = isSelected
}
}

0 comments on commit 1acde59

Please sign in to comment.