본문 바로가기

iOS

(56)
[iOS] updateCycle updateCycle이란?! run loop에서 updateCycle은 view 들을 배치하고 다시 그리는 역할을 합니다. Update Cycle은 애플리케이션이 유저로부터 이벤트 핸들링 코드를 수행하고 다시 main run loop로 컨트롤을 반환하는 지점입니다. 하는 일은?! - View들을 배치하고(layout), Layout은 화면에서 UIView의 위치와 크기를 의미합니다. 모든 View는 frame을 갖고 있고 이는 부모 뷰와의 상대적 거리도 나타낸다. - 보여주고(display) Layout이 뷰의 위치나 크기를 의미한다면 Display는 View의 속성들 중 크기와 위치 자식 View들에 대한 정보를 포함합니다. 색, 텍스트, 이미지, Core Graphics 등이 있습니다. - 제약한다(..
[iOS] RunLoop 최근 레이아웃 애니메이션을 공부하다가 update cycle이 RunLoop안에 있다고 해서 RunLoop가 뭔지 공부해봅시다. Developer Documentation에 뜨는군요! 입력 소스들을 관리하는 객체들에 대한 프로그래밍 인터페이스입니다. 개요 RunLoop는 윈도우의 키보드, 마우스처리와 같은 소스를 입력받아 처리하는 오브젝트입니다. 또한 Timer events도 처리합니다. MainThread에서는 자동으로 만들어지나 프로그래머가 만든 Thread에서는 직접 관리해줘야 합니다. Timer는 인풋은 아니지만 특별히 관리합니다. + current() 메서드로 불러서 쓸 수 있습니다.. 경고 스레드 세이프하지 않다. current 메서드를 이용해서만 쓰세요! 다른 스레드에서 쓰면 원치않은 결과를..
[iOS] animate - layout, setNeedsLayout, layoutIfNeeded 레이아웃의 Constraint를 통해서 애니메이션을 할 수 있습니다. storyboard에서 레이아웃의 constraint를 control을 눌려서 코드로 옮기면 constraint도 IBOutlet이 됩니다. 자 일단 먼저 layoutSubviews()에 대해 알아볼까요! layoutSubviews() 서브뷰의 레이아웃을 즉시 업데이트 시켜주는 메소드입니다. 호출 되면 해당 뷰의 모든 서브뷰가 layoutSubviews()를 실행합니다. 그래서 이 메서드는 처리량이 많아 직접 호출하는 것은 지양되며 layoutIfNeeded() 메서드 또는 setNeedsLayout() 메서드를 통해 호출 시킵니다. 이 메소드는 시스템에 의해서 뷰의 값이 다시 계산되어야 하는 시점 update cycle에 자동으로 호..
[iOS] animation- transition, keyframe transition 에 대해 공부합시당.! 네 트랜지션 옵션들입니다.!! 순서대로 left, right, top, bottom입니다. 페이지를 넘기는듯한 옵션인 curlUp, curlDown입니다.!! animateKeyframes 연속된 여러 애니메이션을 하려고 할 때 completion을 사용하는데 깊이가 깊어질수록 콜백 콜백 콜백 콜백 콜백 해버리는데 .... 이를 쉽게 쉽게 하고자 keyframe을 씁니다! keyframes를 만들고 addkeyframe을 추가하는 형식입니다. withRelativeStartTime의 범위는 0.0~1.0입니다. relativeDuration의 범위는 0.0~1.0입니다. 이 두개의 파라미터는 withDuration의 상대적 시간입니다. - 1번 2번 뷰는 동시에..
[iOS] animation - animate 평소 iOS 공부를 할 때 animate 부분을 매번 nil로 했었고 어떤 오브젝트를 넣어야할 지 궁금했엇는데 이번 기회에 공부를 해봅시다! 애니메이션 효과를 쓰면 사용자에게 부드러운 UX 사용을 시켜줄 수 있습니다. (적재적소에 사용한다면....) 정말 간단한 사용법 초기값, 변경값, 변경 시간 이 세가지만 있으면 됩니다. 초기값에서 변견값까지 시간에 맞게 애니메이션화 한다.! 라고 생각 하는게 편합니다.! 바꿀 수 있는 값들!! position -> bounds, frame, center transformation -> rotation, scale, translation apperence -> backgroundColor, alpha +레이아웃도 변경됩니다.!! UIView.animate - Clos..
[iOS] Collection View 컬렉션 뷰 UICollectionView 컬렉션을 나열하고 사용자 레이아웃 사용해서 나타낼 수 있습니다. UICollectionView는 UIScrollVIew를 상속합니다!!!!!!!!!!!!!!!!!! (+UIScrollView는 UIView를 상속합니다. 콜렉션 뷰 안에 콜렉션 뷰..넣어서 여러 컨텐츠를 보여주고 그 중 특정 컨텐츠는 가로로 스크롤 하게 가능하겠군) UICollectionViewDataSource CollectionView를 사용하기 위해 필수적으로 CollectionView의 갯수와 CollectionViewCell의 형식을 꼭 정해줘야합니다.! UICollectionViewDelegate Delegate를 통해 특정 item이 클릭 되었을 때 함수를 실행시킬 수 있습니다.! UICollec..
[iOS] MVC, MVVM 디자인 패턴 최근 마주친42 앱을 수정하고 업데이트를 하려던 도중.. 해커톤 때만든 코드들이 구조가 제대로 짜여져있지 않았고 각 객체별 역할도 불분명했습니다. 그로 인해 기능을 추가할수록 점점 코드가 보기 어려워지고 이대로는 안된다고 판단하였습니다. 한동안 앱 업데이트를 잠시 멈추고 제 자신을 업데이트 할 시간을 가져보겠습니다. 이를 해결하기 위해 디자인 패턴을 공부를 해보겠습니다. 제가 생각하는 디자인 패턴은 코드들을 역할 및 기능에 맞게 잘 이쁘게 분할시키는 것입니다.! MVC Model, View, Controller Model은 애플리케이션에서 사용할 데이터를 관리 구조체나 클래스! View는 유저 인터페이스를 표현 및 관리 앱 화면에 보이는 UIView 애들 Controller는 View와 Model의 다리..
[iOS] perfromSegue segue의 identifier를 실행시킨다. 라고 생각하면 편합니다.. 위와 같이 선언할 수 있습니다. 또한 parameter로 identifier와 sender를 받는데. identifier는 segue의 identifier를 입력하고 sender는 segue를 통해 전해줄 인자를 적습니다. 일단 우리 세그친구는여 viewController를 control누르고 다른 viewController로 마우스로 드래그하면 생깁니다.! 이렇게 다양한 종류들이 있습니다. 또한 segue를 누르고 attributes inspector를 눌러서 identifier를 설정 해 줄 수 있습니다. ㅎ 이렇게 performSegue로 다른 뷰로 넘어가면 prepare함수가 실행됩니다. performSegue의 sender..