-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Jee] Step2 - 속성 변경 동작 #99
base: Jee
Are you sure you want to change the base?
Conversation
Change the test code by changing the code
Util 객체를 Convert 로 변경 후, 메서드 추가
기존 코드 전면 수정
Panel 과 Plane의 혼동으로 이름 변경
이번 단계에서 고생하셨군요. 그만큼 낯선 방식으로 낯선 구조를 구현해야 해서 그런가 봅니다 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
걱정하면서 작성한 것과 달리 깔끔하게 잘 구현하셨습니다.
남은 부분을 더 작성해서 push해보세요. 이 단계 마무리할 수 있을 것 같습니다
let b = Float(components[2]) | ||
|
||
return String(format: "%02lX%02lX%02lX", lroundf(r * 255), lroundf(g * 255), lroundf(b * 255)) // | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
UIColor.toHex()처럼 위에 Convert.toUIColor()도 UIColor를 확장해도 됩니다. 결국 UIColor 인스턴스를 만드는 거니까요.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
UIColor를 확장 -> convenience init
을 활용해 수정했습니다!
convenience init을 이렇게도 사용할 수 있었다니..! 다양한 방법을 알려주셔서 감사합니다 :D
if rectangle.point.x == point.x || rectangle.point.y == point.y { | ||
selctRectangle = rectangle | ||
return selctRectangle | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이런 동작도 카드 게임할 때처럼 rectangle.contains(x,y) 처럼 객체의 속성을 가져오지 않고 객체가 처리하도록 해보세요
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rectangle 안에서 처리할 수 있게 수정했습니다! 감사합니다!
|
||
func countingRectangle() -> Int { | ||
if rectangles.isEmpty { | ||
print("생성된 사각형이 없습니다.") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
print로 확인하는 것은 지양하세요 :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
넵 수정했습니다!
let add = Factory.createRectangle() | ||
rectangles.append(add) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
변수를 사용할 때는 add
처럼 동사가 더 강한 표현보다는 명사 형태를 권장합니다
그래야 오해를 줄 일 수 있습니다
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
변수에 명사를 써야한다는 걸 알면서 저렇게 지었네용.. 더 유의하겠습니당 :D
func didpressColorChangeButton() { | ||
print("") | ||
} | ||
|
||
func didMoveSlider() { | ||
print("") | ||
|
||
} | ||
|
||
func didpressCreateRectangleButton() { | ||
plane.createRectangle() | ||
} | ||
|
||
} | ||
|
||
extension ViewController: PlaneDelegate { | ||
|
||
func didCreatRectangel(rectangle: Rectangle) { | ||
let view = UIView.init(frame: CGRect(x: rectangle.point.x, y: rectangle.point.y, width: rectangle.size.width, height: rectangle.size.height)) | ||
|
||
view.backgroundColor = Convert.toUIColor(color: rectangle.color, alpha: rectangle.alpha) | ||
|
||
rectengles[rectangle] = view | ||
self.canvas.addSubview(view) | ||
|
||
print(rectangle.point) | ||
} | ||
|
||
func didSelect() { | ||
print("") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
생성 버튼 -> plane -> 델리게이트로 추가하기까지 end-to-end 거의다 구현했네요.
이런 흐름을 구성해보는 것 자체가 중요하고 잘 구현하셨습니다.
이럴 경우는 이렇게 다 처리해야지가 아니라, 이건 여기에 전달만 해야겠다. 그리고 이럴 때는 여기서 이것만 담당해야겠다. 그 역할을 나누는 경험이 중요합니다. PR 열어놓고 남은 부분도 계속해보세요.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
JK 따뜻한 피드백 감사합니다 ㅎㅎ
주신 피드백들 전부 수정했습니다!
남은 단계도 힘내서 진행해보겠습니다! 감사합니다..
✏️ Step 2 작업 목록
✏️ 학습 키워드
✏️ 고민과 해결
JK 정말 오랜만에 PR을 날립니다..
아직 Step2 진행중이나, 잘 가고 있는지 여쭙고자 1차 PR을 보냅니다..!
Step1과 다르게 Step2는 루카스 글 조차 아예 이해가 안갔습니다.
모르는 단어를 하나씩 찾으면서 학습했습니다.
Plane 객체 구현 후 , 랜덤 사각형 출력까지는 가능했으나 그 코드를 MVC 패턴에 넣는게 정말 너무 어려웠습니다..
MVC 패턴과 델리게이트가 도무지 이해가 가지 않았지만,
계속 학습도 해보고 직접 흐름을 그려도 보고, 동료들께 물어가며 이해했습니다.
또,
Xib로 커스텀 뷰를 생성 후 VC에서 어떻게 호출하지?
라는 의문이 있었는데로사의 도움으로
UIView 생성 -> IBOutlet으로 커스텀 뷰 연결
이라는 방법으로 해결했습니다.감사합니당..!