본문 바로가기

iOS 프로그래밍

(24)
SwiftUI ( Animation ) 이번에는 SwiftUI의 Animation에 대해서 공부해 보도록 하겠습니다. 애니메이션은 점점 변해갈 수 있는 값을 사용하는 것이 중점인데요 그래서 기본 UIkit에서도 isHidden으로 true / false를 사용하기 보다는 alpha값을 1 / 0 이렇게 사용하여 1 ... 0.8 ... 0.6 점차 내려갈 수 있는 값을 사용하였죠 SwiftUI는 쉽고 깔끔하면서도 강력한 애니메이션 기능을 제공합니다. 개별적인 효과들을 각각 적용하는 것은 물론이고 그것들을 조합하거나 덮어쓰고, 중단하는 등 애니메이션에 필요한 작업들을 직관적인 API를 통해 쉽게 조절할 수 있다고 합니다. 커스텀 뷰 애니메이션 애니메이션화 할 수 있는 것으로는 - 이미 화면에 준비되어 있는 컨테이너뷰 안에 있는 뷰 - ViewM..
Error: Permission denied @ apply2files - /usr/local/lib/docker/cli-plugins Error: Permission denied @ apply2files - /usr/local/lib/docker/cli-plugins 오류는 존재하지 않는 폴더를 가리키는 심볼릭 링크때문이었습니다. mkdir -p /Applications/Docker.app/Contents/Resources/cli-plugins 로 간단히 해결 가능합니다.
swiftUI 기본 요약 지난 6월 wwdc를 보셨나요? 이제 저희도 위젯을 사용할 수 있게 되었습니다. 따라서 8월 저희 앱이 급한 1차 개발이 완료 되었고 2차 개발을 하는 도중 위젯을 만들고 싶다는 저의 의견에 회사에서 알아서 만들어 보라고 하였고 위젯을 만들기 위해서는 swiftUI라는 언어가 필수적이었습니다. 그때 공부했던 기초들을 늦게나마 정리해 보려고 합니다. (잡담: 블로그 포스팅 중에 그림으로 설명을 하고 싶을 때가 있는데 손그림 그려서 사진찍고 올려 왔었다. 그래서 아이패드 사고 싶다고 했었는데 드디어 아이패드를 구매해서 아이패드도 활용하는 포스팅을...ㅎㅎ) 목차를 보려면 더보기를 누르세요 더보기 목차 1. swiftUI란? 2. swiftUI의 특성 3. ContentView 살펴보기 4. SwiftUI 시..
UserDefaults에 custom object 저장하기 이번에 iOS 14가 나오면서 저희 회사 어플도 위젯을 만들어 보고 싶어 제가 제안하여 만들었었는데요 만들다 보니 아직 위젯이 단순 뷰어의 형태를 가지고 있어 위젯에서 직접 API에서 데이터를 받아와 뷰에 보여는 것이나 timeLine에 따라 계속 데이터를 받아오는 형태로 진행했던 것이 불필요 하다고 느꼈습니다. 그래서 어차피 어플에서 사용하는 데이터를 보여 주는 것이기 때문에 어플에서 데이터가 세팅되면 UserDefault에 적용 하는 형태로 API 에서 받아온 데이터를 어플에서 직접 형태에 맞게 변경 후 struct(구조체) 자체를 저장하고 싶었습니다. 하지만 UserDefault는 key:value 값으로 이 value 값이 Any여도 저희가 만든 custom object를 알진 못하겠죠??ㅎㅎ 이..
[swift] CAShapeLayer / CABasicAnimation / CAKeyframeAnimation https://blog.naver.com/p41155a/222066801303 [swift] UIBezierPath로 직선 및 도형 그리기 이러한 애니메이션을 만들어야 하는 업무를 받게 되어​UIBezierPath 및 CAShapeLayer, CABasic... blog.naver.com 저번에 UIBezierPath 를 통해 직선 및 곡선을 그려 보았습니다. ​ 단순히 선만 긋는 것이라면 path.stroke()이거나 path.fill()를 통해 그리기가 가능하지만 애니메이션을 넣을 것이라면 CALayer이라는 것을 활용해야합니다. ​ CALayer (CA = Core Animation) - UIView 는 CALayer 형태의 Layer 를 하나 가지고 있다. - CALayer 는 뷰의 구성 요소로 ..
[swift] UIBezierPath로 직선 및 도형 그리기 이러한 애니메이션을 만들어야 하는 업무를 받게 되어 ​ UIBezierPath 및 CAShapeLayer, CABasicAnimation, CAKeyframeAnimation를 알아보게 되었습니다. ​ UIBezierPath 베지어경로 "custom view에서 만들 수 있는 직선 및 곡선 세그먼트로 구성된 경로"라고 나옵니다. ​ 그럼 내용에서 나온것 처럼 customView에 직선을 그리는 소스를 넣어 볼까요? class View1: UIView { override func draw(_ rect: CGRect) { let path = UIBezierPath() UIColor.systemRed.set() path.move(to: CGPoint(x: 10, y: 10)) path.addLine(to: C..
[swift] label 위쪽 정렬 위와 같은 제목을 치면 아래와 같은 포스팅 들이 많이 나온다 하지만 나는 이러한 button 두개를 하나의 view에 넣어 높이를 맞추어야 하는 상황에서 sizeToFit을 하면 view의 높이를 알 수 없었기 때문에 반드시 위쪽 정렬이 필요하다 느꼈다. 그래서 찾아본 결과 기존에 CustomButton에서 사용하던 UILabel 대신 VerticalAlignLabel형을 명시해줌으로서 간단히 해결할 수 있었다. 위와 같은 버튼을 만드는 법을 알고 싶은 분이라면 이전 포스팅을 참고하시길 바랍니다. public class VerticalAlignLabel: UILabel { enum VerticalAlignment { case top case middle case bottom } var verticalAl..
[swift] storyboard가 아닌 SnapKit 라이브러리를 사용하여 autoLayout 설정하기 - customButton(radioButton) 오늘은 저도 많이 사용하고 있는 SnapKit이라는 라이브러리에 대해 소개하고 아주 자그마한 프로젝트로 설명해 드리려고 합니다. stroyboard로 autolayout을 한다면 이런 식으로 설정할 수 있겠죠? 가끔 모든 프로젝트를 코드로만 만들기도 하지만 저는 어느정도 storyBoard에 형태가 나와 있는 것을 선호하기 때문에 위치정도는 storyBoard에 잡고 customButton을 만들어 줄게요 (xCode 11에서 바뀐 scroll View 오토레이아웃도 설명 드릴겸) 예제 start! 우선 형태 먼저 만들어 줄까요? 이제 스크롤 뷰를 만들면 기존과 달리 content Layout Guide, Frame Layout Guide가 추가 되어 나오는데요 아래와 같이 스크롤 뷰는 safeArea에..