분류 전체보기
독서에 대해
이틀 동안 느꼈던 감정은 꼭 남겨놓아야 잊어버리지 않을 것 같다. 어제 오늘 오랜만 (약 두달)만에 친구 집에 놀러갔다. 나도 개발 프로젝트로 인해 계속 바빴고 로스쿨에 다니는 친구는 훨씬 바쁜 상황이었기 때문에 약속이 계속 미뤄지고 미뤄지다 이번 주 주말이 아니면 안되겠다 싶어서 일요일 저녁에 시간이 나자마자 신촌으로 달려갔다. 나에게 창조욕구, 프로그램, 그림과 같은 무언가 만들어내고 싶은 욕구가 있다면 그 친구에게는 글을 쓰거나 말을 해서 자신의 생각을 전달하는 표현욕구가 있다고 생각한다. 둘 다 각자의 욕구에 해당하는 행동을 할 때 가장 신나보이고 몰입한다. 그래서 그런가 친구와 내가 만나면 코인노래방을 많이 간다. 코인 노래방에서 나는 듣기 좋은 목소리와 여러가지 기교를 통해 삐쭉삐쭉하지만 멋들..
![[UITableVIew] automaticDimension 이 되지 않을때](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvCEP7%2FbtrvDQNW7AR%2F4XFA6YfQdokxpocyP27mc1%2Fimg.png)
[UITableVIew] automaticDimension 이 되지 않을때
cell custom 해서 사용하다 보면, content의 크기에 따라, cell 크기가 유동적으로 조정되어야 할 때가 있다. 이때 사용하는 것이 rowHeight를 UITableView.automaticDimension로 설정해주는 것이다. 하지만, 최근에 코드를 짜던 중, 저게 들어먹지를 않아서 고생했었다. 처음에는 rowHeight 를 정하는 시점이, 안에 content 들이 들어온 후가 되어야 된다고 착각해서, 함수 선언 위치도 바꿔보고, 이것저것 만져봤는데도 도저히 적용되지 않았다. 그러다가, 해결방법을 찾게 되었다. 바로 autoLayout을 설정해주어야 한다는 것이다!! 정말 간단한 문제인데 생각을 못했었다.. (사실 10분 만에 해결하긴 했다) 암튼! 요로코롬 오토레이아웃을 걸어주면, 내부..
![[UIView] view를 fade in, fade out 시키는 방법](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6E5Ma%2FbtrvHiPMvkf%2F81LizmtxQt7BQ2GUAy1bkk%2Fimg.png)
[UIView] view를 fade in, fade out 시키는 방법
UIView의 alpha 값을 with duration 을 걸어둔 상태에서 alpha 값을 올리고 내리고 하는 animation을 걸어서 만들어졌다. UIView class에 extension 하는 식으로 선언해서, 계속 사용 가능하다. public extension UIView { func fadeIn(duration: TimeInterval = 1.0) { UIView.animate(withDuration: duration, animations: { self.alpha = 1.0 }) } func fadeOut(duration: TimeInterval = 1.0) { UIView.animate(withDuration: duration, animations: { self.alpha = 0.0 }) } }
3년 동안의 과외가 마무리되어 간다.
나에게는 중3 때부터 고3까지 수학을 가르쳤던 학생이 한 명있다. 내가 중간에 독일을 1년 다녀오는 바람에 고1 때의 모습을 보지는 못했지만, 시간만 놓고 보면 4년 넘게 그 친구와 함께했다니 놀랍다. 지금 생각해보니 정말 쪼그만할 때 만났는데 어느새 훌쩍 커버렸구나 싶다. 그 친구가 크는 동안 나도 같이 커서 가르치는 내내 나에게는 조그만한 학생이었어서 이렇게 듬직하게 컸다는 건 방금 깨달았네..ㅎㅎ 참 똑똑하고 정이 많은 친구이고 그래서 그 친구가 진심으로 잘되기를 바라고 부족한 실력이지만 최선을 다하고 있다. 원래 과외 시간만 과외를 한적은 거의 없었고, 일주일에 두세번은 더 가서 옆에 두고 공부시켰다. 과외비를 더 받은적은 없다. 과외비는 나에게 중요하지 않게 느껴졌다. 내가 그 친구의 선생님이라..
![[Animation] animation play 중간에 값 변경하는 몇가지 방법](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBCV70%2Fbtrvu1v1SYE%2FcZG0eDQZXeGLykKL7D4Ckk%2Fimg.png)
[Animation] animation play 중간에 값 변경하는 몇가지 방법
아무것도 모를때는 아래 방법을 썼지만, 조금 더 공부를 해보니 이 방법들을 쓰면 절대 안된다ㅋㅋㅋ 여유가 될 때, CoreAnimation과 UIProperty animation에 대해서 정리해보겠다. 애니메이션은 미리 완성된 형태를 재생하는 방식이다. 이에 대해서 사용자와의 상호작용이 이루어지긴 하지만, 한 애니메이션에서 여러가지 변수에 따라서 많은 것을 바꾸려면 수 많은 레이어가 필요하게 되고, 이는 결국 cpu와 메모리에 큰 부담으로 이어진다. 최근 내가 만들고 있는 애니메이션은, 물결 위에 도형이 둥둥 떠있는데, 공이 떠있는 애니메이션이 재생되면서, 동시에 사용자가 특정 행동을 했을때 도형의 색깔이나 모양이 바뀌는 애니메이션이다. 이를 위해서는 일단 공이 튀기는 애니메이션이 재생되어야 하고 사용자..
![[Swift] viewcontroller에서 앱이 background에서 foreground 변환 감지](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnxGHi%2FbtrvELd87i3%2FjBGAi8zezVNCpXKzIWckK1%2Fimg.png)
[Swift] viewcontroller에서 앱이 background에서 foreground 변환 감지
private var observer: NSObjectProtocol? override func viewDidLoad() { observer = NotificationCenter.default.addObserver(forName: UIApplication.willEnterForegroundNotification, object: nil, queue: .main) { [unowned self] notification in // 감지되었을 때 수행하고 싶은 동작 } }
![[NavgiationController] 네비게이션바 투명하게 만들기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuG0hv%2FbtrvyhLE2Yi%2FyQ0OgRYK9CMmznQPKKhVY1%2Fimg.png)
[NavgiationController] 네비게이션바 투명하게 만들기
네비게이션바는 StroyBoard를 통해서는 반투명하게(translucent) 만 가능하다. 하지만 이렇게 되면, 네비게이션바를 사용하는 앱들은 애니메이션이나 색변화 등을 화면 전체에 가득차게 만들 수가 없다. 이를 해결하기 위해서는 해당 View의 뷰컨트롤러에서 navigationBar을 다루어주면 된다. override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default) navigationController?.navigationBar.shadowImage = UIImage() navi..
![[Core Data] Context를 이용해 Entity에 Attributes들을 추가, 삭제](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc2F8yJ%2FbtrvFCg43A7%2FVYLKieX488aDR97oQKTGak%2Fimg.png)
[Core Data] Context를 이용해 Entity에 Attributes들을 추가, 삭제
4. CoreData Context를 이용해 Entity에 Attributes들을 추가하고, 삭제하기 지금까지 우리는 Entity와 Attribute를 만들고, 이를 Load 해서 tableViewCell 에서 보여지도록 해보았다. 그리고 Test를 위해 SQLite Editor을 통해 직접 DB를 수정해보았다. 먼저 이전 장에서 우리가 수동으로 추가했던 DB들은 다 지워주자. name부분만 추가한 거라서, 우리가 새롭게 값을 추가할 때 오류를 유발한다. 즉, 우리는 LoadCategories 함수를 이용해서 CRUD 에서 R(Read ) 를 완료했다. 그렇다면, 나머지 Create, Update, Destroy는 어떻게 할까? 천천히 알아보자. 먼저, Create를 해보자! StoryBoard에서 Ta..
![[Core Data] Entity의 Name Attribute들을 Cell에 표시하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2Y94Q%2FbtrvE5jvn5o%2FuDlumnzVkkqpyTyz2GoOR0%2Fimg.png)
[Core Data] Entity의 Name Attribute들을 Cell에 표시하기
3. Entity의 Name Attribute들을 Cell에 표시하기, SQLite Editor 다루기 TableView를 많이 다루어보지 않았다면, 준비 과정부터 꽤 어려웠을 것이다. (나는 어려웠다...ㅜ) 지금 하는 부분은, 이전 부분보다 더 쉽지는 않을 것이다. CoreData가 처음이라면 새로운 것 투성이일 테니 말이다. 하지만, 차근차근히 읽어보고 이해 안가는 부분은 한번 더 읽고 따라해본다면 분명히 CoreData를 더 잘 이해할 수 있을 것이다. 먼저 CategoryViewController.swift 파일을 열자. 먼저 Categories 라는 변수를 만들고, 그 안에 방금 생성했던 Entity 의 이름으로 배열을 만들어주자! Category라는 클래스를 배열로 생성한 것이다. var c..