일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Git
- IOS
- darkmode
- window
- Code
- UIButton
- github
- 개발자
- Firebase
- Notification
- SwiftUI
- rxswift
- JPA
- Xcode
- error
- FLUTTER
- view
- iOS16
- geofencing
- Apple
- Realm
- Archive
- 이미지
- Swift
- mac
- MacOS
- Session
- 웹뷰
- 한글
- appstore
- Today
- Total
목록전체 글 (269)
EEYatHo 앱 깎는 이야기
AutoLayout 방법의 발전 Layout 방법은 AutoLayout을 끝으로, 오랫동안 많은 사람이 썼다. 때문에 다양한 구현법과 유용한 서드파티들도 나와있다. AutoLayout은 기본적으로 NSLayoutConstraint의 인스턴스를 생성하고, 이를 뷰에 붙힘으로써 제약사항을 걸어준다. 즉, 앞으로 나올 방식들은 NSLayoutConstraint 인스턴스를 생성하는 방법이며, 래핑 여부와 방법에 따라 나눠지는 것 1. NSLayout - 가장 고전적인 방법. - 소스가 길다 -> 필요없는 소스가 많음 (.isActive = true 라던지, 쓸대 없이 긴 객체 이름이라던지.. ) - 그다지 직관적이지 않다. 2. Visual Format - 마치 문자열에 뷰를 그리듯이 생성. - 한 축에 해당하..
Layout, Constraint, AutoLayout의 변천사 Swift에서 뷰를 그리는 Layout 방법은 아래 그림과 같이 발전해왔다. View를 Layout하는 방법. Frame-Based Layout -> AutoResizingMask -> AutoLayout AutoLayout의 방법. NSLayout -> VisualFormat -> Anchor -> SnapKit View를 Layout하는 방법의 발전 1. Frame-Based Layout - 뷰의 좌상단 점의 위치와, 넓이, 높이를 지정하여 뷰의 위치를 고정시킴 - 런타임에 뷰들의 구조가 변경되면 영향을 받는 모든 뷰의 프레임을 다시 계산 - 가로모드 화면, 다양한 크기용 뷰 구조가 따로 필요. 이런 방식은, iPhone 5와 iPad가..
빌드에 있어서 영향을 줄 수 있는 요소는 3가지가 있다. 첫번째, 코드에 의한 영향 두번째, 빌드 환경에 의한 영향 세번째, 빌드 자동화에 의한 영향 혼자 상상한 비유.. 🤔 첫번째, 코드에 의한 영향 => 차의 성능을 좋게하는 것. 두번째, 빌드 환경에 의한 영향 => 차가 지나가는 길을 좋게하는 것. 세번째, 빌드 자동화에 의한 영향 => 도로의 교통체중을 없애는 것. 첫번째, 코드에 의한 영향 코드를 짤 때, 빌드시 컴파일러가 고려하는 경우의 수를 줄이면, 빌드 속도가 빨라진다. 프로퍼티 선언시 var 보다는 let을 사용 타입을 명시 (타입 추론을 안하도록) let a = 0 < let a: Int = 0 타이트한 접근 제한자 open < public < internal < fileprivate ..
Xcode란? 애플이 만든 컴퓨터인 매킨토시. 매킨토시의 OS인 OS X(macOS) OS X의 대표적인 IDE이며, Mac App Store에서 무료로 다운로드 할 수 있다. 컴파일 도구로 GCC( GNU Compiler Collection) 을 가지고 있고, ( Xcode 4 부터는 GCC -> LLVM ) * GCC : GNU 프로젝트의 컴파일러 모음집, 자유 소프트웨어(복사, 사용, 연구, 수정, 배포에 무제한) 중 가장 잘 알려져있는 소프트웨어 * GNU프로젝트 : 1983년 리처드 스톨먼의 오픈소스 소프트웨어의 생산과 보급을 장려하기 위해 설립한 자유 소프트웨어 제단( Free Software Foundation 에서 진행하며 유지 중인 OS 프로젝트. 때문에, C, C++, Objecive-..
[ 요약 ] 컨트롤러를 찾아서 그 뷰에 띄우지 말고, Window 위에 띄워라. [ 개요 ] Popup 관리 모듈을 만들때의 일. (PopupManager) 팝업을 띄워주기위해 현재 화면에 보이는 뷰컨트롤러를 찾아야한다고 생각했다. 그래서 구글링해서 찾은 소스. (visibleViewController, selectedViewController, presentedViewController를 활용해 DFS로 찾아준다.) class func topViewController(base: UIViewController? = UIApplication.shared.keyWindow?.rootViewController) -> UIViewController? { // return base if let nav = bas..
여태껏 단순히 한방향으로 움직이고, 움직이는 속도를 조절하는 애니메이션만 알고있었다. 그런데 목표지점에 도착한 뒤, 살짝 튕기고 제자리로 돌아오는 일명 스프링 효과가 있었단걸 알았다. usingSpringWithDamping 0.0 ~ 1.0 0.0에 가까울수록 심하게 튕기고, 1.0이면 튕기지 않는다 initialSpringVelocity 0.0 ~ 1.0 0.0에 가까울수록 튕길 때 속도가 빠르다 예시 ) UIView.animate(withDuration: 0.1, delay: 0, animations: { // 일단 밑에 레이아웃하기 위한 버퍼 애니메이션 container.alpha = 1 }, completion: { _ in UIView.animate(withDuration: 0.5, delay..
디자인팀의 요구사항은, 올라왔다가 내려가는 Toast. Frame으로 Animate하는거야 뭐 아주 쉽다. 그런데 Label의 줄 수에 따라 동적으로 높이가 변하는 Toast. 때문에 FrameBasedLayout이 아닌, AutoLayout을 사용한다. AutoLayout Animate로 리서칭을 하였는데, animate 밖에서 Constraint 수정하고, animate 안에서 layoutIfNeeded() 하기? 잘 안되면 setNeedsUpdateConstraints() 하기? 다 필요없다 animate 함수 안에 아래처럼만 해주면 된다. 갓갓 SnapKit.. ( 진작에 SnapKit Animate로 검색할걸 ㅇㄴㅁㄹㄴㅁㅇㅁㄹㅁㄴ ) UIView.animate(withDuration: 1.0, ..
[ 요약 ] CloudWatch 를 쓰면 된다 방법은 아래에 [ 주절주절 ] 역대급 삽질 (배경) AWS EC2에 RDS 디비 인스턴스를 올려놓고 있다. 영상의 id를 받고, 해당 영상의 연관 영상을 뿌려주는 API가 터졌다.. ? why.. 원격에 올려둔 서버에서 발생한 문제다. 로그는 Result Set을 못만드는 익숙한 오류라고 뜨는데.. 아무리 찾아봐도 그런 문제가 발생할 만한게 없다...? dev DB(로컬 서버), prod DB(원격 서버)를 완전히 똑같히 맞추고, 돌려봤는데? 로컬에서는 잘 된다. 로컬에서는 되고 서버는 안된다..? 짚히는게 없어서 상상의 나래를 펼치다보니, 연관 영상을 뿌려주는 API는 nativeQuery였고, dev DB랑 prod DB에서 다른게 Schema 뿐이라; ..