Conversation
|
|
||
| import ProjectDescription | ||
|
|
||
| public extension SettingsDictionary { |
There was a problem hiding this comment.
처음 보는 타입이랑 익스텐션이다...! 맥락상 Fastlane 관련 코드 같다고 생각했는데 찾아보니까 Tuist네요 신기하다...!!
세팅 관련인 건 알겠는데 어떤 식으로 사용되는 건가요? >_<
There was a problem hiding this comment.
ProjectDescription은 Tuist에서 swift 소스코드를 통해 프로젝트 파일을 생성할 수 있도록 도와주는 패키지이며, SettingsDictionary 타입은 Xcode의 build settings들을 세팅할 수 있게 도와주는 타입입니다. 이 타입을 extension해서 tuist에서 기본으로 제공하는 xcode build settings에 더하여 저희가 원하는 요소들을 추가할 수 있어요. 아랫 부분에 보시면 CODE_SIGN_STYLE라는 것이 있는데 signing&capability에서 signing을 자동으로 부여할지 수동으로 부여할지에 대한 dictionary 타입입니다. 이런 식으로 원하는 옵션을 설정할 수 있어요!
| case forDefault | ||
| } | ||
|
|
||
| /// 서버에서 들어온 Date String을 UI에 적용 가능한 String 타입으로 반환하는 메서드 |
| private func addShadowLayer(at btn: UIButton) { | ||
| let shadowLayer = CAShapeLayer() | ||
| shadowLayer.frame = btn.bounds | ||
| shadowLayer.applyShadow(color: UIColor(rgb: 0x000000), alpha: 0.2, x: 0, y: -5, blur: 20, spread: 0) | ||
| btn.layer.insertSublayer(shadowLayer, at: 1) | ||
|
|
||
| let shadowLayer2 = CAShapeLayer() | ||
| shadowLayer2.frame = btn.bounds | ||
| shadowLayer2.applyShadow(color: UIColor(rgb: 0xC8CADA), alpha: 1, x: 0, y: 0, blur: 15, spread: 0) | ||
| shadowLayer2.masksToBounds = true | ||
| shadowLayer2.cornerRadius = 28 | ||
| btn.layer.insertSublayer(shadowLayer2, at: 2) |
There was a problem hiding this comment.
객체지향적으로 봤을때, 함수는 필요한 기능들을 묶어서 하나의 단위로 만든 거잖아요! 그래서 함수 안에 들어가는 코드들에는 self를 명시적으로 붙여주는 것이 그 함수가 이 파일에서 필요하다는 의미를 더 살릴 수 있다는 말을 (주워)들었습니다
근데 또 너무 다 붙이면 그렇기도 하고... 음 applyShadow나 insertSublayer 처럼 메소드를 사용하는 줄에는 self 붙여주면 더 좋을 것 같다는 생각이 들었습니다!
There was a problem hiding this comment.
@EunHee-Jeong
좋은 의견 감사합니다! 일단 저 코드 자체에서는 btn이 파라미터이기 때문에 self를 붙일 수는 없지만, self를 붙여주는 행위의 의미에 대해 한번 더 생각해볼 수 있었네요~! 다음부터 참고해서 더 좋은 코드 짜볼게요 ㅎㅎ
|
Module Factory 만드는 거 좋아요~!! |
👻 작업한 내용
🎤 PR Point
PR
공유
make regenerate입력하시면 프로젝트 파일이 삭제되고 새로 생성됩니다! tuist에서 모듈 구조가 변경된 경우에 사용하시면 됩니다!논의하고 싶은 사항
📸 스크린샷
📮 관련 이슈