목록iOS (28)
clyne의 개발 기록
1. initWithCoder: layerClass setNeedsDisplay addConstraints: addConstraint: (can happen multiple times) 2. willMoveToSuperview: 3. invalidateIntrinsicContentSize 4. didMoveToSuperview 5. awakeFromNib 6. willMoveToWindow: 7. needsUpdateConstraints 8. didMoveToWindow 9. setNeedsLayout 10. updateConstraints intrinsicContentSize 11. layoutSubviews (can happen multiple times) 12. drawRect:
이 글은... Xcode에서 빌드하기를 눌렀을 때, 어떤 일들이 일어나는지 이해하고, 빌드시 발생하는 에러를 더 수월하게 찾아내고자, 그리고 빌드 속도에 영향을 주는게 무엇일까.. 가 궁금해서 공부했던 경험을 공유하기 위해 작성되었습니다. Language Processing System 컴퓨터시스템은 하드웨어와 소프트웨어로 분류되는데요, 이중 소프트웨어는 각 프로세스들이 어떻게 동작할지 편성하고, 하드웨어는 그 동작을 수행합니다. 그러나, 0과 1만 이해할 수 있는 하드웨어는 고수준 언어인 Swift를 직접적으로 이해하지 못합니다. 그렇기 때문에 Swift는 하드웨어가 이해할 수 있는 기계어로 변환되어야하는데, 그 작업을 수행해주는 시스템을 < 언어 처리 시스템 (Language Processing Sy..
보호되어 있는 글입니다.

* 본 포스팅은, 본인이 면접을 대비하기 위해 임시로 작성한 포스팅입니다. 1. ARC란 무엇입니까? (대비: GC 가비지 컬렉션) l 의미 n Automatic Reference Counting 의 약자 n 메모리 관리 방식을 의미 (힙 영역) n 레퍼런스 카운트가 0이 될 때만 메모리에서 해제하는 방식 n 컴파일 시점에 동작하기 때문에, 인스턴스가 언제 메모리에서 해제될 지 예측이 가능하다. (해제시점이 정해져있음) n 따라서, 메모리 관리를 위한 시스템 자원이 추가로 필요하지 않음. l 단점 n ARC 작동 원리를 모르고 사용하면, 순환참조로 인하여 인스턴스가 메모리에서 영원히 해제되지 않을 수 있음. l 참고로, 2011이전 ObjC는 MRC를 사용함 (Manual) 2. Strong과 weak,..

안녕하세요 iOS 개발자 CNOO 입니다~ 최근 iOS 관련 포스팅이 없었죠? ^^; 오늘 저희가 드디어 애플 스토어에 앱 심사 1차 결과를 받았습니다 :) 역시 예상대로 1차 심사에서 통과하는건 무리가 있었나보네요.. 그래도 생각보다 적은 사유여서 아직은 버틸만 합니다. 그럼 저희의 리젝 사유를 공유드릴게요 저희는 총 4개의 리젝 사유가 있었어요 2. 3 Performance: Accurate Metadata 2. 5 Performance: Software Requirements 4. 2 Design: Minimum Functionality 5. 1.1 Legal: Privacy - Data Collection and Storage 이렇게 4개였는데요. 자세한 사유와 조치내용을 공유드리겠습니다. 먼저,..
안녕하세요. iOS 개발자 CNOO 입니다! 오늘은 간단하게, 아이폰의 Top Notch 및 Bottom Notch의 높이를 구하는 코드를 작성해보도록 하겠습니다. 노치란?? static func bottomNotchHeight() -> CGFloat { if #available(iOS 11.0, tvOS 11.0, *) { return UIApplication.shared.delegate?.window??.safeAreaInsets.bottom ?? 0 } return 0 } static func TopNotchHeight() -> CGFloat { if #available(iOS 11.0, tvOS 11.0, *) { return UIApplication.shared.delegate?.window??..

안녕하세요! iOS 개발자 CNOO입니다!! 오늘은 UILabel 안에 있는 Text의 가로 길이와 세로 길이를 구하는 방법에 대해서 공유드리고자 합니다. UILabel의 크기를 동적으로 변경해야하거나, 동적으로 Inset을 주기 위해, 텍스트의 가로 길이를 구해서, UILabel의 width를 변경하기도 합니다. 저는 사용하기 쉽도록 UILabel의 확장함수로 getTextWidth 를 만들어서 사용하고있습니다. extension UILabel { func getTextWidth() -> CGFloat { if let text = self.text, let font = self.font { return text.size(withAttributes: [NSAttributedString.Key.font :..

안녕하세요! iOS 개발자 CNOO 입니다~! 오늘은 RxSwift의 오퍼레이터 중, concat에 대하여 알아보겠습니다. 저는 개인적으로, 전수열님의 ReactorKit에서 mutate 함수 리턴할 때, concat을 애용하는 편인데요, concat에 대해서 자세히 알아보고자, 그리고, 제가 공부한 것을 공유드리고자 이렇게 포스팅 하게 되었습니다. RxSwift의 연산자를 처음 공부할 때는 저는 항상 공식문서와 내부 구현함수를 살펴봅니다. reactivex.io/documentation/operators.html ReactiveX - Operators Introduction Each language-specific implementation of ReactiveX implements a set of o..

안녕하세요!!! 오늘도 어김없이 돌아온 iOS 개발자 CNOO입니다!! 오늘 여러분께 소개해 드릴 것은 바로바로~~~~~~~~~ UIAlertViewController에 이미지 넣기 입니다! 선택지에도 넣고, 타이틀 쪽에도 넣고~~ 하는 방법입니당 먼저, 구현된 결과물 부터 보고 시작하도록 하겠습니다. 아래 Alert은 렛터디 내 1:1 쪽지함에서 구현한 Alert의 일부입니다. 요것을 구현해보도록 하겠습니다 ㅎㅎ 1. UIAlertController를 상속받는 MyAlertController 생성 저는 여기서 렛터디의 앞글자를 따서 LTAlertController라고 칭했습니다. 원하시는 것으로 클래스를 생성하시면 됩니다. class LTAlertController: UIAlertController {..

안녕하세요~! iOS 개발자 CNOO입니다!! 오늘은, UIView에 shadow 효과를 넣는 방법에 대해서 알아보겠습니다! UIView를 상속하는 모든 뷰들에 적용할 수 있으니, 원하시는 곳에 구현하셔서 사용하시면 되겠습니다! :) 먼저 구현하고자 하는 결과물부터 보여드리겠습니다~ 스터디 개설하기 버튼을 보시면, 버튼이 붕 떠있는 것 처럼 그림자 효과가 들어가있는 것을 보실 수 있습니다. 구현코드 view.layer.shadowOpacity = 0.4 // 투명도 view.layer.shadowOffset = CGSize(width: 5, height: 5) // 그림자 위치 view.layer.shadowRadius = 10 // 그림자 모서리 꺾임 정도 view.layer.masksToBounds ..