본문 바로가기

아이폰 개발186

swift layoutIfNeeded 예제 2 첫번째 원그리기. 원을 그릴 커스텀 뷰를 아래 코드처럼 생성한다. 여기서 원으로 만들어줄 self.layer.cornerRadius = self.frame.width / 2 코드를 init 메소드에 넣어도 안되고, draw 에 넣어도 반영이 안된다. layoutSubviews 가 호출되는 시점에 코드를 넣어주면 된다. 참고로 init - > layoutSubviews -> draw RedView 객체를 코드로 생성하면 위의 순서로 호출되는데 draw 호출될때 layoutSubviews 에서 그렸던 뷰 사라짐. import UIKit class RedView: UIView { /// 코드로 작성 override init(frame: CGRect) { super.init(frame: frame) print(.. 2021. 7. 22.
swift layoutIfNeeded 예제 1 위 화면에서 버튼을 누르면 버튼이 천천히 세로로 길어지고, 가로로 길어지는 이벤트가 발생된다. 아래 코드에서 애니메이션 처리 소스 안에 self.view.layoutIfNeeded() 을 빼보자. 애니메이션 처리가 되지 않을 것이다. self.view.layoutIfNeeded() 함수를 호출해야지 업데이트된 제약 조건들이 반영이된다. 참고로 제약조건을 변수로 빼서 작업을 할 수 있다. 예) heightAnchor .. import UIKit class ViewController: UIViewController { fileprivate var heightAnchor : NSLayoutConstraint! fileprivate var widthAnchor: NSLayoutConstraint! overrid.. 2021. 7. 22.
디스패치 큐 사용시 주의 사항 디스패치큐 사용시 주의사항 반드시 메인큐에서 처리해야 하는 작업 2.Sync 메서드에 대한 주의 사항 3.Weak, strong 캡쳐주의 컴플리션 핸들러의 존재이유 동기적 함수를 비동기 함수로 만드는 방법 중요한 개념 : ui 관련작업은 메인큐에서 처리해야 한다 비동기로 작업을 보내다가 ui작업은 메인 뷰로 보내서 처리해야 한다 코드 예시 urlsession 도 내부적으로 비동기 처리 로직으로 작동한다. 비동기 작업 완료 후 ui 처리 작업은 메인 스레드로 보내서 처리하는 예 실제앱에서는 ui 작업이 메인큐에서 작동하고 플레이 그라운드에서는 global 큐에서 작동 한다. 2)sync 메서드에 대한 주의 사항 sync 메소드와 관련해 절대 해서는 안되는 코드 2가지 코드예시 이유는 2)현재의 큐에서 현재.. 2021. 7. 3.
swift 디스패치큐의 종류 특성 1.메인큐 2.글로벌 큐와 qos 3.프라이빗 큐 -큐의 종류 다양한 큐가 존재한다 대기열(큐) 마다 특성이 달라서 특성에 맞게 작업을 할당해주면 된다. 큐의 종류별로 스레드가 존재해서 알아서 큐가 작업을 스레드로 보내준다 -메인큐에 대하여 코드 예시 - 글로벌큐 글로벌 큐는 병렬로(동시)처리된다 글로벌 큐의 서비스 품질 특성 백그라운드 큐를 생성 후 닷 유틸리티큐를 생성해서 작업을 할당했다면 성능은 유틸리티 성능이된다. 코드 예시 - 프라이빗 큐 프라이빗큐 디폴트 성질은 직렬처리다.( 옵션으로 동시성 처리도 가능) 코드예시 코드로 구현 정리 2021. 7. 1.
swift 직렬과 동시 & 동기와 비동기 개념 큐의 종류 큐의 종류에는 직렬큐와 동시성 큐가 있다. -직렬큐 -동시성큐 몇 개의 스레드로 분산해서 처리할지는 시스템이 결정한다. 다만 큐에만 넣어주면 여러개의 스레드로 처리해준다. 한문장으로 정리 언제쓰나? 동시큐 사용 예) 동기와 비동기 의미 2021. 7. 1.
ios dispatchequeue 1 위 화면에서 스크롤 할때 화면이 왜 버벅일까? 아이폰 화면은 16밀리 세컨에 한번씩 갱신된다. 하나의 셀을 구성하기 위해서 여러 작업들이 일어나는데 그 작업들의 처리량이 많기 때문이다. 즉 일이 많다. xcode에서 보면 스레드 하나만 작동되는것을 볼수 있다. 하나의 셀에서 많은 양을 처리하는 과정이다 실생활예시로 여러개의 복사기가 있는데 하나의 복사기만 사용하는것과 같다. 그럼 어떻게 많은 양의 작업을 동시에 처리해서 안 버벅이게 할수 있을까? 대기열에 작업을 넣어주기만 하면 된다. 즉 큐에 디스치 해주면된다. 그럼 시스템이 알아서 큐에서 작업을 빼서 스레드에 할당해준다. 우리가 할일은 작업을 큐로 보내는것! GCD 와 OPERATION 어떻게 코드로 구현 할까? 코드 구현 2 한 작업 단위란 클로저 .. 2021. 6. 30.
swift - Xcode 설정 xcode에서 Xcode 프로젝트로 파일 이동하면? (레퍼런스 뿐만 아니라 디스크에 숨겨져 있는 파일들도 옮겨진다.) 레퍼런스란 프로젝트 파일에 있는 파일 목록들을 의미한다. 이 파일안에 목록에 파일명이 포함되어야 참조 (레퍼런스)되어있는것. 패키지내용보기 후, 프로젝트 파일에 파일 내용이 없으면 없으면 디스크에 실제로 파일이 있어도 인식(참조)을 못할 수 있다. 팀에 초대되어 있지만 리소스( 인증서, 프로파일) 에 접근할수 있는 권한이 없으면 , xcode에서 auto로 프로비저닝 프로파일을 생성할수 없다 권한이 없으면 Team 이름이 personal team으로 나온다 권한이 있으면 Hyundai .co 이런식으로 표출된다. 요점: 인증서만 받았고, 팀에 초대 되어있고, 권한만 있으면 auto sig.. 2021. 6. 26.
swift - custom collectionview cell 주의 collectionView 커스텀 뷰 이슈 -커스텀 cell에 addSubviews 할때 주의 사항[!] https://g-y-e-o-m.tistory.com/134 https://zeddios.tistory.com/m/359 https://sihyungyou.github.io/iOS-dequeueReusableCell/ https://jinnify.tistory.com/58 2021. 6. 26.
Swift 스크롤 뷰 튜토리얼 2021 - 06 -03 스크롤뷰 생성할때 스크롤 뷰의 안의 컨텐츠 뷰의 컨텐츠들(UIView)의 높이가 각각 명확해야 한다. 그리고 제일 마지막 뷰의 바텀 const를 10 - 15 등 원하는 값을 주면 간격에 맞게 이격되어 출력된다. https://corykim0829.github.io/ios/UIScrollView-with-storyboard/# 2021. 6. 3.