본문 바로가기

모바일앱/iOS91

TIL 로컬라이징, 써드파티 1. 로컬라이징 현지화, 그 나라의 실정에 맞추어서 수정하는 것을 로컬라이징 이라고한다. let us: Go! 세미나 내용 중 앱 내 디자인에 있어, 탭바의 레이블이 사라질 경우 장점은 무엇일까 에 대하여 → 네이버 웹툰 앱 탭바 하단에 레이블을 생성해두면 해당 나라에서만 사용하는 것은 상관없지만 여러 나라를 타겟으로 출시하는 경우, 각 나라에 맞게 번역을 해야하는 상황 발생 페이스북 같은 경우는 레이블을 없앤 상태 탭바 하단의 레이블이 사라질 경우, 로컬라이징이 쉬움 본격적인 로컬라이징은 나중에 정리 https://zeddios.tistory.com/368 2. 써드파티(Third party) 써드파티의 위키백과 설명은 아래와 같다. "기본적으로 '제 3자'를 뜻하는 단어. 이 제 3자가 어떤 분야의 .. 2022. 3. 19.
로그를 출력할 때 사용하는 함수들 Swift에서 콘솔창에 로그 쉽게 출력하는 방법이다. 보통 로그에 날짜, 파일명, 메소드명, 라인을 작성하려면 아래와 같이 작성한다. print("\\(Date()) \\(#file.components(separatedBy: "/").last ?? "") \\(#function) \\(#line) 로그 내용") 함수설명 Date() : → 날짜 출력 #file : 파일 출력 → #file만 사용하는 경우에는 파일이 있는 디렉터리가 모두 출력 components(separateBy:)함수를 사용 .last → 마지막 위치 #fuction 현재 메소드명 #line 현재 라인 출력 위와같이 작성하면 콘솔창에 이렇게 출력된다. 출력결과 #file만 사용 하는 경우 2020-10-11 16:31:33 +0000 .. 2022. 3. 18.
error - Command CompileSwiftSources failed with a nonzero exit code Command CompileSwiftSources failed with a nonzero exit code 이슈 발견 보고서 📌 발견일 / 해결일 22.03.18 / 22.03.18 📌 이슈사진 📌 상황설명 학습중 발견 → 이름이 같은 파일이 있는 경우 .swift file중 이름이 같은 파일이 있어서 발생함 Swift 버전 에러 - 참고 https://shovel-geek.tistory.com/74 📌 Solution 아래 참조 DriveData 를 삭제 cmd+shift+k를 해주는 작업을 진행한 후 파일 이름만 바꿔주고 해결! → 이것 먼저 해볼것 2022. 3. 18.
디자인패턴 - MVC MVVM 디자인패턴 "디자인 패턴은 소프트웨어를 개발할 때 발생하는 다양한 문제에 대한 재사용 가능한 템플릿 해결방법!" 즉, 어떤 실질적인 코드가 아닌 아이디어라고 할 수 있다. 패턴 이름 해결할 문제, 해결 방법, 결과를 설명, 해당 디자인을 설명하고 공유하기 편하기 때문 해결할 문제 해당 패턴이 어떤 문제를 해결할 때 사용할 것인지 해결 방법 디자인 패턴은 다양한 상황에 적용될 수 있는 템플릿과 같기 때문에 해결 방법은 특정 디자인이나 구현을 설명하지는 않고, 추상적인 설명과 요소를 제공하여 해결 방법을 제시 결과 소프트웨어에서는 동일한 기능을 구현할 때 메모리, 속도 등을 비교하여 어느 코드가 더 나은 성능을 보이는지 비교할 수 있다. 또한 디자인 패턴을 사용하는 이유인 재사용성도 평가 항목에 포함된다. .. 2022. 3. 16.
View의 계층구조 View의 계층구조 1. view의 계층구조는 superView, subView, siblingView 로 구성 view의 계층구조는 superView, subView, siblingView 로 특정되며 이는 drawing순서를 결정짓는다. superView와 subView의 관계에서는 superView가 우선해서 그려진다. 동일한 superView 내부에 여러 siblingView가 있다면 먼저 addSubView가 된 순으로 drawing된다. siblingView가 겹쳐질 때는 , 먼저 drawing된 View가 가려진다. 그림출처: KxCoding 2. superView와 subView의 계층 구조에 따른 몇가지 특징 superView를 제거하면 subView도 함께 제거된다. superView의.. 2022. 3. 14.
error - Extensions must not contain stored properties 이슈 발견 보고서 📌 발견일 / 해결일 22.03.10 📌 이슈사진 📌 상황설명 extension에 깔끔하게 정리하고자 관련 변수를 같은 위치에 선언했더니 발생했다. 📌 Solution extension에는 저장프로퍼티를 넣을 수없고 연산프로퍼티만 사용가능함 변수 선언부에 따로 설정하거나, extension에 꼭 넣어야한다면 연산프로퍼티로 선언할것 참고 → https://zeddios.tistory.com/263 2022. 3. 13.
코코아팟 Hero 라이브러리 **🌐 LINK → CocoaPods 사이트** https://github.com/HeroTransitions/Hero 업데이트 내용이 있을 수 있기 때문에 자세한 내용은 상단 링크를 한번 살펴보고 사용할 것. Hero Hero 는 iOS 뷰 컨트롤러 전환을 빌드하기 위한 라이브러리입니다. UIKit의 성가신 전환 API 위에 선언적 레이어를 제공하여 개발자가 사용자 지정 전환을 쉽게 수행할 수 있도록 합니다. 사용법 1.활성화 self.hero.isEnabled = true 2. heroID, heroModifiers 설정 혹은 프레젠트 스타일만 정해줘도 실행됨 property heroID heroModifiers 애니메이션 템플릿종류 heroModalAnimationType heroNavigation.. 2022. 3. 11.
앱의 다크모드를 바꾸는 여러가지 방법 📌 개념 IOS13 부터 다크모드가 도입되었습니다. 앱전체를 시스템설정에 따라 다크모드로 적용하는 것이라면 별 이슈가 없겠지만 아래와 같은 경우가 있을 수 있습니다. 일부만 다크모드를 적용하는 경우 앱 내부 설정에서 다크모드 변경을 제공하는 경우 [Common Property] OverrideUserInterfaceStyle → 사용자인터페이스스타일 재정의 Apple Document https://developer.apple.com/documentation/uikit/uiview/3238086-overrideuserinterfacestyle var overrideUserInterfaceStyle: UIUserInterfaceStyle { get set } Discussion Use this propert.. 2022. 3. 9.
error - cannot find [ ] in scope iphoneSE3공개 이슈 발견 보고서 📌 발견일 / 해결일 22.03.08 📌 이슈사진 📌 상황설명 외부파일의 클래스가 접근이 안돼 상속클래스, 프로토콜을 확인했지만 접근이 안됨. 📌 Solution 자신이 추가한 문서가 아니라 외부에서 가져온 파일은 따로 타켓을 설정해주어야한다. FileInspector 중간부분 타겟 멤버십에서 현재 앱을 체크해야한다. 그리고 다시 빌드 1. FileInspector - TargetMembership Check 2. Build 참고 ⌥⌘1 → File Inspector ⌥⌘2 → History Inspector ⌥⌘3 → Quick Help Inspector ⌥⌘0 → Hide Inspector 오늘은 바로 애플의 신제품을 공개하는 날입니다. 새롭게 공개하는 제품은 iphoneSE3 인데.. 2022. 3. 8.
component와 split 함수 그리고 map함수 1. component() parameter : separatedBy separator : 구분기호 입력 구분자를 기준으로 무조건 단어로 처리한다. 구분자를 “ ”로 할경우 스페이스를 기준으로 양옆을 단어로 인식 띄어쓰기 하나만 있어도 배열의 갯수가 2개로 인식 구분자를 삭제 ( split은 구분자 포함 ) var s = "this is powerful pineapple" print(s.components(separatedBy: "p")) // ["this is ", "owerful ", "inea", "", "le"] var t = " this is powerful pineapple" print(t.components(separatedBy: " ")) // ["", "", "this", "is", "p.. 2022. 3. 7.