SSAC iOSアプリケーション開発者デビュープロセス-23


🖋 Custom Font


Xcodeが提供するFont以外のFontをどのように適用しますか?
まず,Custom Fontを適用する際には2つの要因を考慮する必要がある.
  • 著作権
  • 容量
  • 저작권은 당연히 조심해야겠죠..Fontの容量はアプリケーションのサイズを大きくする可能性があるため、特定のバッジでのみ使用されるFontには、Fontを含む画像が含まれる場合があります.
    また、Custom Fontを使用する場合、ユーザーが入力したテキストは存在しない可能性があります.❗️용량을 줄이기 위해서 의도적으로 사용자들이 거의 사용하지 않는 글자를 지우는 경우도 있습니다 Custom Fontを適用しましょう.
    雪蚕 Webサイトからお気に入りのFontをダウンロードします.(.otf , .ttf)これらのファイルをXcodeプロジェクトに埋め込みます.Create ref 설정하면 폰트 파일을 다운로드 받은 경로를 참조해서 가져옵니다.
    info.plistファイルに使用するフォントファイルを登録します.(확장자명까지) Build Phases 에 폰트 파일이 등록되어 있는지 확인!ここに適用した後、追加したフォントを使用したい場合は、エラーが発生します.🥲
    これは、フォントのファイル名とフォント名が異なる可能性があるからです.
    for family in UIFont.familyNames {
                print(family)
    
                for sub in UIFont.fontNames(forFamilyName: family) {
                    print("=======> \(sub)")
                }
            }
    폰트명을 매번 확인하기 힘들기 때문에 extension 을 이용해서 연산 프로퍼티로 설정해서 사용합니다!

    🌍 Localization


    アプリケーションを発売するとき、言語や文化圏を他の環境で使用するのにどのように役立ちますか?
    同じ機能のアプリケーションを言語別に作り直すと、非効率になるでしょう?
    そのため、他の国でもサービスをサポートできるように、アプリケーションを国際化する必要があります.(사용자들에 따라 현지화)まず、アプリケーションで使用される各文字列をローカライズする方法について説明します.
    1)StoryboardオブジェクトIDの使用

    この設定により、既存のオブジェクトのオブジェクトIDが自動的に作成されます.

    各国に適した文字列を各オブジェクトに格納できます.

    新しいビューオブジェクトが追加された場合は、以下に示すようにObject IDをチェックして手動で追加する必要があります.
    2 ) Localizable.文字列の使用❗️❗️❗️파일명 주의Localizableという文字列ファイルを作成します.
    デフォルトのマルチ言語は、[インスペクタ](Checker)領域でLocalizeを使用して作成できます.❗️1)에서 설정했던 Localization 을 지원할 언어가 옵션으로 나옵니다
    //English
    "tab_home" = "HOME";
    "tab_search" = "Search";
    "tab_calendar" = "Calendar";
    "tab_setting" = "Setting";
    "welcome_text" = "Hello! Nice to meet you!";
    
    "tab_home" = "홈";
    "tab_search" = "검색";
    "tab_calendar" = "캘린더";
    "tab_setting" = "설정";
    "welcome_text" = "안녕하세요~! 반갑습니다!";
    前に示したように、テキストは国ごとに格納されます.
    welcomLabel.text = NSLocalizedString("welcome_text", comment: "")
    その後、NSLocalizedStringによってローカライズstringファイルのキー値を取得し、多言語をサポートします.휴대폰의 기본 언어 설정에 따라 변경되는 것을 확인할 수 있습니다.
    //extension
    var localized: String {
            get {
                return NSLocalizedString(self, comment: "")
            }
        }
    以上のようにローカル演算プログラムを設定し、String構造に拡張として追加します.
    enum LocalizableStrings: String {
        
        //case welcome_text
        case tab_home
        case tab_search
        case tab_calendar
        case tab_setting
        case data_backup
        case welcome_text
        
        var localized: String {
            return self.rawValue.localized()
        }
    }
    そして上記のように私たちが挙げた兄をLocalizableと決めましたstringで使用したstring値に設定します.string 값을 동일하게 설정하면 rawValue 를 통해 바로 연산가능次に、ローカライズされた計算プログラムを使用して、各列挙インスタンスのローカライズされた文字列ファイルをキー値を返すように設定します.
    welcomLabel.text = "welcome_text".localized
    welcomLabel.text = LocalizableStrings.welcome_text.localized
    string 파일이 많아질 수록 이런식으로 관리하는게 더 효과적이겠죠??異なる文字列ファイル名が設定されている場合、どのように適用しますか?
    backupLabel.text = NSLocalizedString("data_backup", tableName: "Setting", bundle: .main, value: "", comment: "")
    ファイル名を使用してtableNameを作成できます.
    3 ) InfoPlist.strings
    アプリケーションでユーザーの場所や写真にアクセスするときに、ユーザーがアクセスできるように設定されています.
    使用する文字列も国/地域の言語で設定する必要があります.
    ただし、これらのハードウェアおよびプライバシー宣言については、Localizableを使用できます.stringで設定できません.Apple API에 의해 정의된 Key 를 사용해 구현해야 합니다! Info.Plist - Open as Source Code 를 통해서 확인 할 수 있습니다.
    //InfoPlist.strings
    CFBundleDisplayName = "MY DIARY";
    NSCameraUsageDescription = "Please Access Camera";
    
    CFBundleDisplayName = "나의 일기장";
    NSCameraUsageDescription = "사진 권한을 허용해주세요";
    ❗️ Key를 사용해서 설정하기 때문에 문자열 처럼 " " 로 묶어주지 않아도 됩니다.
    InfoPlist.string 말고 파일명을 다르게 할 경우는 어떻게 될까요?
    -실험해보고 블로그에 정리하겠습니다.

    🏷 P.S.


    今日の課題のためにStoryboard Referenceを利用して1~2週間前に明確に検討したことがありますが….やった時は覚えてないから探して時間がかかった
    混淆に彷徨う未来のためにRelationship Segue으로 설정하기 Tab Bar item -> 새로운 Storyboard 의 VC 에 추가하기また,今日学習した多言語処理をtab bar itemに適用すると,初めて画面が出たときにはすべて処理しなければならないので,初めて画面が出たのはHomeである.StoryboardのVCなので、対応するVCのViewDidLoadにマルチ言語処理を設定する必要があります!각 VC에서 다국어 처리를 하게 되면 탭 버튼을 모두 눌러야 적용됩니다.羽状バニラで今日の内容を確認できます.
    동기, 비동기, process, thread 는 제 나름대로 생각이 정리되는 시점에서 블로그에 정리해서 올리도록 하겠습니다!