KBO Application
고민 1
문득 그런 생각이 들었다.
배경 색이 연하면 상관이 없겠지만 강력한 단색을 사용하는 팀의 경우 아래에 내용을 적어내기엔 가독성이 현저히 떨어질 것 같다는 생각.
그래서 제목 테두리 정도만 팀 컬러를 사용하고 나머지는 흰색으로 통일해야겠다!
해결 단계 1
상단에 팀 로고와 팀명이 쓰여지는 곳보다 조금 더 크게 label을 깔았다.
(배경색을 일부만 변경하는 방법을 몰라서 Label을 사용하고 labelColor를 이용했다...ㅠ)
구속도 원하는 위치에 꼼꼼하게 잡고
해당 Label을 15번줄 backgroundLabel이라고 선언해주었다.
그리고 바꾸는 김에 viewDidLoad 내부가 너무 많아지는 것 같아서 View Controller와 똑같이 detailSetup() 함수를 만들어서 밖으로 빼주었다.
그리고 28번 줄을 수정했다. 어차피 같은 색을 사용할거고 사용하는 위치만 달라지면 되니까
view.backgroundColor -> backgroundLabel.backgroundColor 로 수정해주었다.
앱 실행 이전에 이전에 키움 히어로즈 색상 더 밝고 강한 컬러로 바꿔주고 실행시키기~
??????????????????????????????????????
문제 발생 1
구단 로고와 구단명이 사라지고 색상만 우두커니 서있다.
날아간 건 아닐까 고민했지만 금방 생각을 접었고, 위치가 같아서 덮어씌워진거구나 생각할 수 있었다.
우선순위를 변경하면 되겠지! 하고 금방 생각이 들어서 backgroundLabel에 대고 우클릭을 해봤지만 아무 일도 일어나지 않았다.
이건 파워포인트가 아니기 때문이다.
나중에 선언된 Label이 더 위에 씌워지는건가!! 하고 생각해서 코드의 위치를 옮겨보았다.
그럼 그렇지 backgroundLabel이 제일 나중에 선언되어 있으니 그런거겠지 저거만 위로 옮겨서 다시 빌드하면 끝이겠구나
바꿔주고 빌드하면~
아...
아는 영역도 아니고 나름 합리적인 도전이라 생각했음에도 처참했기에
도저히 시간만으로는 해결할 수 없을 것 같아서 구글의 힘을 빌렸다.
인터페이스 빌더에서 우선순위를 조정해야한단다.
문제 해결 1
여기에 있는 Background Label의 위치를 Stack View보다 앞으로 옮겨야하는거였다.
비슷하게 접근은 했었는데 선언 순서가 아니고 순수하게 생성 순서였던 것 같다.
이렇게 위치를 Stack View 앞으로 옮겨주었다.
빌드해보면
잘 나와서 다행이다!
이전에 비해서 훨씬 깔끔해진 느낌이 든다! 이제 하얀색 영역에 어떤 글씨든 써넣어도 가독성이 좋을 것이라고 생각한다.
나중에 시간나면 PNG 파일의 크기도 설정해서 구단 로고 크기를 똑같이 맞추는 것이 더 보기 좋겠다는 생각이 든다.
오늘의 KBO는 여기까지!
괜히 넣어보는 메인화면. 알록달록 예쁜 것 같다.
Calculator
스파르타 코딩 클럽에서 2주차 과제가 주어졌다.
조건에 맞는 계산기 코드를 작성해보는 시간이었다.
1단계 계산기
1단계 계산기의 조건이다.
Calculator 하나의 클래스 내부에서만 작동하면 된다고 한다.
4레벨 계산기까지 가야하기에 시작부터 class 이름 뒤에 1을 붙여두었다.
그리고 소숫점 자리까지 계산이 가능하도록 firstNumber, secondNumber는 Double 형태이며 return 역시 Double이다.
operator의 변화에 따라 맞는 자리에 찾아갈 수 있게끔 operator를 기준으로 switch문을 펼쳐두었다.
그리고 0으로 나누기는 핸드폰 계산기에서 검색해보아도 '오류' 라고 뜨길래 예외처리로 fatalError를 넣어두었다.
사실 return 0으로 해도 상관은 없었을 것 같은데 뭔가 오류를 내보고싶었다.
오류 메세지는 조금 더 친절하게 0으로 나눌 수 없습니다로 했다.
클래스의 인스턴스를 생성하고 각 상수에 값을 담아주었다.
사실 우측에도 뜨지만 괜히 찍어보고싶었다.
굿.
2단계 계산기
나머지 연산을 해보자.
쉽다고 자만했던 부분이다.
당연히 firstNumber % secondNumber로 끝나버릴 줄 알았다.
그런데 항상 C언어로 했을 때도 그렇고 모든 수를 Int형으로만 해봤기때문에 Double형에서 막힐 줄 몰랐다.
우습게 봤다가 엄청 고민하고 찾아서 사용한 고차함수이다. 실수 연산에서 나머지를 사용하기 위한 방법이라고 한다.
그냥 Int( ) 를 씌워버릴까 했지만 소숫점 아래가 날아가버리면 애초에 맞는 연산이 아닌데 그런 방법을 사용할 이유가 없었다.
잘나온당
3단계 계산기
이제는 각 연산의 클래스를 만들고 Calculator와 관계 맺기라고 한다.
관계가 과연 상속인가? 에 대해서 많은 고민을 했지만 여러 Class로 쪼개기도 아직 시도를 안한 주차인데 건너뛰고 바로 상속이 아닐 것 같다고 생각했다. 그래서 Class만 쪼개는 것이 맞다고 생각했다.
문제 조건에는 없지만 나머지 연산도 그냥 덤으로 하나 더 했다.
각 Class는 이런 식으로 쪼개놓았다.
그리고 각 연산 클래스들이 이용하게 될 Calculator Class.
Calculator Class 내부 코드를 변경하라는 지시가 있어서 switch문을 없애고 인스턴스 생산 때 operation으로 건네야겠다는 생각을 했다.
이제 operator는 안녕...
레벨3에 대한 모든 Class의 인스턴스를 생성해주었다.
예시 코드에 있는 main인데 연산을 어떻게 하든 방법만 알면 상관없는 것 같아서 switch 버린거임!!
이렇게 입력값을 넣어보았다.
굿.
4단계 계산기
추상화된 클래스를 만들기.
여기서 말하는 관계는 상속이 맞는 것 같다.
이러면 3단계도 상속인가 생각해봤는데 그러면 4단계인 의미가 없는 거 아닌가...
일단 부모 클래스
자식 클래스
operation을 Abstract로 변경하면서 Calculator 클래스 내부 코드 변경까지 완료. return도 당연히 바꿔줘야한다.
클래스의 인스턴스도 똑같이 생성해주고
아까부터 비슷하게 계속 쓰이고 있는 계산식
4단계도 굿.
아 제발 다 맞은거면 좋겠다!!!
3단계가 제일 알쏭달쏭하다. 내가 한 방법이 맞는걸까...?
내일 문법 강의를 들어보면 알 수 있을까싶으니 내일은 열심히 문법 강의 달려보는걸로!
'iOS > TIL (Today I Learned)' 카테고리의 다른 글
[240307] 스파르타 코딩 클럽 8일차 'Git & Github' | TIL (2) | 2024.03.07 |
---|---|
[240306] 스파르타 코딩 클럽 7일차 'textField' | TIL (4) | 2024.03.06 |
[230304] 스파르타 코딩 클럽 5일차 'TextField & KBO' | TIL (0) | 2024.03.04 |
[230229] 스파르타 코딩 클럽 4일차 '1~3 Review & Project' | TIL (0) | 2024.02.29 |
[230228] 스파르타 코딩 클럽 3일차 'Git' | TIL (0) | 2024.02.28 |