• Jan
  • Feb
  • Mar
  • Apr
  • May
  • Jun
  • Jul
  • Aug
  • Sep
  • Oct
  • Nov
  • Dec
  • Sun
  • Mon
  • Tue
  • Wed
  • Thu
  • Fri
  • Sat
  • 27
  • 28
  • 29
  • 30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

if(kakao)2020 세션을 보고 생각한 것들

SwiftUI로 프로젝트를 진행하고 있어서, SwiftUI랑 iOS 위주로 봤다.

SwiftUI를 망설이고 있다면? - 염승엽 Flip 님

제일 먼저 본 세션.
이번 프로젝트를 시작할 때 부터 SwiftUI 배워보고싶다! 써보자! 해서 쓰게 된거라
난 전혀 망설이진 않았지만,… 오히려 그 반대지만…
다른 사람이 생각하는 SwiftUI를 써야하는 이유와
카카오에서는 어떤 식으로 SwiftUI를 쓰기 시작했는지가 궁금해서 홀린듯이 클릭했던 것 같다.

image image

LOC(Line Of Codes)의 관점에서 볼 때 차이가 진짜 디박,,

내가 SwiftUI를 써보면서 (아직 얼마 쓰지도 않았지만) 진짜 좋다고 느낀 게
기본값이 중앙인 것 !! 스토리보드로 뷰를 짜다 보면 Horizontal이든 Vertical이든 Center 정렬을
진짜 많이 쓰는데…. 왼쪽 맨 위가 기본값인게 정말 맘에 안들었었다.
중앙 정렬하고 간격 조정하고 하는 데 시간 진짜진짜 많이 잡아먹는데 SwiftUI를 쓰면
기본값이 중앙인 건 물론이고.. Spacer() 요놈도 진짜 넘 편하다 ㅠ 오브젝트가 여러개면 자동 n등분 해주는것도 쵝오..

Canvas로 실시간 프리뷰를 볼 수 있는 건 말할 것도 없고 ~!!

padding

.padding([.leading, .trailing], 16)

이런식으로 padding값을 여러 개 한번에 줄 수도 있군 !

❗️추가 : 이렇게 줄 수 도 있다.

.padding(.horizontal, 16)

각 요소 computed property로 분리하기

//loginView: some View
VStack(spacing: 10){
  titleText
  descriptionText
}
kakaoLoginButton
private var titleText: Text{
  Text(viewModel.title)
  	.font(.system(size: 18))
  	.foregroundColor(.black25)
}
private var kakaoLoginButton: some View{
  Button(action: viewModel.kakaoLogin){
    Hstack(alignment: .center, spacing: 6.0){
      Image(viewModel.kakaoButtonIcon)
      Text(viewModel.kakaoButtonTitle)
    }
  }
  .buttonStyle(KakaoButtonStyle())
}

이런 식으로 각 요소들을 computed property로 분리해서 사용이 가능하다고 한다 !
방금까지 그냥 한곳에 우르르 때려넣는 식으로 뷰 짜다가 세션 본건데
이걸 지금 봐서 넘 다행이다 ( ◠‿◠ ) ㅋㅋㅋㅋ

그리고 아직 MVVM에 대한 이해가 부족함..
그래서 viewModel은 어떻게 쓰는건지에 대해 좀 더 공부가 필요하다!

구조체 새로 정의해서 사용하기

fileprivate struct KakaoLoginButton: View{
  @Binding var viewModel: LoginViewModel
  
  var body: some View{
    Button(action: viewModel.kakaoLogin){
    	Hstack(alignment: .center, spacing: 6.0){
      	Image(viewModel.kakaoButtonIcon)
      	Text(viewModel.kakaoButtonTitle)
    	}
 	 	}
  .buttonStyle(KakaoButtonStyle())
  }
}

이런 식으로 구조체를 새로 정의해서 사용하는것도 가능하다.
이게 apple이 권장하는 방식이라고 한다 !
(이런식으로 파일을 새로 만들어 뷰를 분리하는 것)
이런 식으로 짜봐야지!

buttonStyle 프로토콜을 따르는 버튼 스타일 정의해서 사용하기

위 코드에서 .buttonStyle(KakaoButtonStyle()) 요 부분!
자주 사용하는 버튼 스타일들을 정의하고 간편하게 사용할 수 있다.
제플린 보고 나도 여러 개 만들어봐야지 ~!

struct KakaoButtonStyle: ButtonStyle{
  func makeBody(configuration: Self.Configuration) -> some View{
    configuration.label
    	// 설정들 주루루룩
  }
}

버튼 외에도 Toggle, Picker, TextField 등에도
이렇게 스타일들을 따로 정의할 수 있는 프로토콜이 존재한다고 한다!

순수 SwiftUI앱? UIKit을 떼어놓을 수는 없다

SwiftUI에서 제공하지 않는 것들은 UIViewRepresentable 프로토콜을 채택한 View를 새로 정의해서
UIKit 기반으로 구현해야 한다고 한다… 라는 말을 듣자마자

안그래도 방금 검색하고 온 progress bar가 생각났다,,^__^
원래는 ProgressView랑 ZStack 써서 구현해야겠네 하고 있었는데 세션에서 마침ㅋㅋㅋ 와아

iOS13, iOS14

image

iOS14에서 굉장히 많은게 추가되었던거군…
전에는 CollectionView 짜기 진짜 힘들었을 것 같다. 어떤 식으로 짰으려나,,,

롸?

image

image

지금 SwiftUI로 개발하다가 왔는…데..

놀랐지만 ㅋㅋㅋㅋㅋㅋㅋㅋ 버전 관련 문제 때문이었다.
지금 진행하는 프로젝트는 iOS14부터 지원하도록 할거니까….다행 ( ◠‿◠ ) 어우 놀랬네

하나하나 볼 때마다 추가할 예정,,,