Skip to content

Commit

Permalink
πŸ”€:: #70 from MaeumgaGym/feature/#68-viewChange
Browse files Browse the repository at this point in the history
βš“οΈ :: [#68] ν† κΈ€ view μ „ν™˜
  • Loading branch information
jjunhaa0211 authored Dec 28, 2023
2 parents 72432b8 + a65593e commit 707c733
Show file tree
Hide file tree
Showing 5 changed files with 231 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import UIKit
import SnapKit
import Then

public class ToggleViewController: UIViewController {

let toggleView = MaeumGaGymToggleView(width: 430.0, height: 793.0)

public override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white

layout()
}

func layout() {
[
toggleView
].forEach { view.addSubview($0) }

toggleView.snp.makeConstraints {
$0.centerX.equalToSuperview()
$0.top.equalToSuperview().offset(101.0)
$0.width.equalTo(430.0)
$0.height.equalTo(845.0)
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -74,3 +74,4 @@ public class DesignSystemViewController: UITableViewController {
}
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import UIKit
import Then
import SnapKit
import RxSwift
import RxCocoa

open class MaeumGaGymToggleButton: UIButton {

public let disposeBag = DisposeBag()



private let textLabel = UILabel().then {
$0.textAlignment = .center
$0.numberOfLines = 1
$0.font = UIFont.Pretendard.labelLarge
$0.textColor = .black
$0.backgroundColor = .clear
}


public init (
type: ToggleButtonType,
radius: Double? = 20.0
) {
super.init(frame: .zero)

self.layer.cornerRadius = radius ?? 20.0
self.textLabel.text = type.message

setupUI()
}

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

private func setupUI() {
self.addSubviews([textLabel])

snp.makeConstraints {
$0.width.equalTo(83.0)
$0.height.equalTo(40.0)
}

textLabel.snp.makeConstraints {
$0.centerX.centerY.equalToSuperview()
}
}

public func buttonYesChecked() {
self.backgroundColor = DSKitAsset.Colors.gray50.color
textLabel.textColor = DSKitAsset.Colors.blue500.color
}

public func buttonNoChecked() {
self.backgroundColor = .clear
textLabel.textColor = DSKitAsset.Colors.gray400.color
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import Foundation

public enum ToggleButtonType {
case image
case album
case timer
case metronome

var message: String {
switch self {
case .image:
return "사진"
case .album:
return "앨범"
case .timer:
return "타이머"
case .metronome:
return "앨범"
}
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
import UIKit
import SnapKit
import Then
import RxSwift
import RxCocoa

open class MaeumGaGymToggleView: UIView {

var toggle: Bool = true
let disposeBag = DisposeBag()

let view1 = UIView().then {
$0.backgroundColor = .red
}

let view2 = UIView().then {
$0.backgroundColor = .blue
}

private let imageToggleButton = MaeumGaGymToggleButton(type: .image)
private let albumToggleButton = MaeumGaGymToggleButton(type: .album)

public init(
width: Double? = 430.0,
height: Double? = 845.0

) {
super.init(frame: .zero)

setupUI(width: width ?? 430.0, height: height ?? 845.0)
isToggleLR()
buttonTap()
}

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

private func setupUI(width: Double, height: Double) {
addSubviews([view2, view1, imageToggleButton, albumToggleButton])

view1.snp.makeConstraints {
$0.width.equalTo(430.0)
$0.height.equalTo(721.0)
$0.centerX.equalToSuperview()
$0.top.equalToSuperview().offset(0.0)
}

view2.snp.makeConstraints {
$0.width.equalTo(430.0)
$0.height.equalTo(721.0)
$0.centerX.equalToSuperview()
$0.top.equalToSuperview().offset(0.0)
}

snp.makeConstraints {
$0.width.equalTo(width)
$0.height.equalTo(height)
}

imageToggleButton.snp.makeConstraints {
$0.leading.equalToSuperview().offset(124.0)
$0.bottom.equalTo(self.safeAreaLayoutGuide).offset(-16.0)
}

albumToggleButton.snp.makeConstraints {
$0.leading.equalTo(imageToggleButton.snp.trailing).offset(16.0)
$0.bottom.equalTo(self.safeAreaLayoutGuide).offset(-16.0)
}

}

private func isToggleLR() {
if toggle == true {

view2.removeFromSuperview()
addSubviews([view1])

view1.snp.makeConstraints {
$0.width.equalTo(430.0)
$0.height.equalTo(721.0)
$0.centerX.equalToSuperview()
$0.top.equalToSuperview().offset(0.0)
}

imageToggleButton.buttonYesChecked()
albumToggleButton.buttonNoChecked()
} else {

view1.removeFromSuperview()
addSubviews([view2])

view2.snp.makeConstraints {
$0.width.equalTo(430.0)
$0.height.equalTo(721.0)
$0.centerX.equalToSuperview()
$0.top.equalToSuperview().offset(0.0)
}

albumToggleButton.buttonYesChecked()
imageToggleButton.buttonNoChecked()
}
}

private func buttonTap() {
imageToggleButton.rx.tap
.subscribe(onNext: { [weak self] in
self?.toggle = true
self?.isToggleLR()
}).disposed(by: disposeBag)

albumToggleButton.rx.tap
.subscribe(onNext: { [weak self] in
self?.toggle = false
self?.isToggleLR()
}).disposed(by: disposeBag)
}

}

0 comments on commit 707c733

Please sign in to comment.