수색…


사용자 정의 글꼴 포함

사용자 정의 글꼴 지원
사용자 정의 글꼴을 사용하려는 응용 프로그램은 이제 해당 번들을 응용 프로그램 번들에 포함 할 수 있으며 Info.plist 파일에 UIAppFonts 키를 포함하여 시스템에 해당 글꼴을 등록 할 수 있습니다. 이 키의 값은 응용 프로그램 번들의 글꼴 파일을 식별하는 문자열 배열입니다. 시스템은 키를 볼 때 지정된 글꼴을로드하여 응용 프로그램에서 사용할 수 있도록합니다.

Info.plist 에서 글꼴을 설정하면 사용자 정의 글꼴을 IB 또는 프로그래밍 방식으로 다른 글꼴로 사용할 수 있습니다.

  1. 글꼴을 Xcode Supporting Files 폴더로 드래그 앤 드롭합니다. '타겟에 추가'섹션에서 앱을 표시하는 것을 잊지 마십시오. 이 순간부터 IB에서이 글꼴을 사용하고 글꼴 팔레트에서 글꼴을 선택할 수 있습니다.

여기에 이미지 설명을 입력하십시오.

  1. 이 글꼴을 장치에서 사용하려면 Info.plist 열고 Fonts provided by application key (UIAppFonts)에서 Fonts provided by application key 추가하십시오. 항목 0 키에 글꼴 이름을 값으로 추가하십시오. 참고 : 글꼴 이름은 글꼴 파일 이름과 다를 수 있습니다. 여기에 이미지 설명을 입력하십시오.
  1. 아래 코드를 사용하여 사용자 정의 글꼴 이름을 가져옵니다.

[ 스위프트 3 ]

for family in UIFont.familyNames {
            print("\(family)")

            for name in UIFont.fontNames(forFamilyName: family) {
                print("   \(name)")
            }
        }

[ 목표 -C ]

for (NSString *familyName in [UIFont familyNames]){
        NSLog(@"Family name: %@", familyName);
        for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
            NSLog(@"--Font name: %@", fontName);
        }
    }

스토리 보드로 사용자 정의 글꼴

스토리 보드의 UI 구성 요소에 대한 사용자 정의 글꼴은 스토리 보드 및 범주의 사용자 정의 런타임 속성 을 사용하여 쉽게 얻을 수 있습니다.

장점은 다음과 같습니다.

  • 요소에 대한 콘센트를 정의 할 필요가 없음
  • 프로그래밍 방식으로 요소의 글꼴을 설정할 필요가 없습니다.

따라야 할 단계

  1. 글꼴 파일 : 응용 프로그램 번들에 글꼴 파일 (.ttf)을 추가하고이 사용자 정의 글꼴 설명서 와 같이 응용 프로그램 에서 제공하는 글꼴 아래 Info.plist에서 글꼴 항목을 추가하십시오.

  2. 범주 정의 : UIKit + IBExtensions 와 같은 파일을 추가하고 사용자 정의 글꼴을 설정하려는 UILabel, UIButton 등과 같은 UI 요소의 범주를 추가하십시오. 모든 카테고리에는 fontName 이라는 사용자 정의 속성이 있습니다. 이 작업은 스토리 보드에서 나중에 사용자 지정 글꼴을 설정하는 데 사용됩니다 (4 단계 참조).

UIKit + IBExtensions.h

#import <UIKit/UIKit.h>

//Category extension for UILabel
@interface UILabel (IBExtensions)

@property (nonatomic, copy) NSString *fontName;
@end

// Category extension for UITextField
@interface UITextField (IBExtensions)

@property (nonatomic, copy) NSString *fontName;
@end

// Category extension for UIButton
@interface UIButton (IBExtensions)

@property (nonatomic, copy) NSString *fontName;
@end
  1. Getters and Setters : 추가 된 각 카테고리에 대한 fontName 속성에 대한 getter 및 setter를 정의합니다.

UIKit + IBExtensions.m

#import "UIKit+IBExtensions.h"

@implementation UILabel (IBExtensions)

- (NSString *)fontName {
    return self.font.fontName;
}

- (void)setFontName:(NSString *)fontName {
    self.font = [UIFont fontWithName:fontName size:self.font.pointSize];
}
@end

@implementation UITextField (IBExtensions)

- (NSString *)fontName {
    return self.font.fontName;
}

- (void)setFontName:(NSString *)fontName {
    self.font = [UIFont fontWithName:fontName size:self.font.pointSize];
}
@end

@implementation UIButton (IBExtensions)

- (NSString *)fontName {
    return self.titleLabel.font.fontName;
}

- (void)setFontName:(NSString *)fontName{
    self.titleLabel.font = [UIFont fontWithName:fontName size:self.titleLabel.font.pointSize];
}
@end
  1. 스토리 보드에 글꼴 설정 : 사용자 정의 런타임 속성에 fontName 을 keyPath로 입력하고 사용자 정의 글꼴의 이름 을 유형이 표시된 값으로 문자열을 그림과 같이 추가하십시오.

여기에 이미지 설명을 입력하십시오.

앱을 실행하는 동안 맞춤 글꼴이 설정됩니다.

노트:

  • Lato-Regular는 내가 사용한 사용자 정의 글꼴입니다.
  • 번들에 추가 된 .ttf 파일의 이름은 스토리 보드에서 확장자없이 사용되어야합니다.
  • 글꼴 크기는 UI 요소의 속성 관리자에서 정의한 것과 동일합니다.

스토리 보드 내 컨트롤에 사용자 정의 글꼴 적용

다음 예제는 사용자 정의 글꼴을 탐색 모음에 적용하는 방법을 보여 주며 Xcode에서 발견 된 기발한 동작에 대한 수정 사항을 포함합니다. 또한 사용자 정의 글꼴을 프로젝트에 추가 한 후 속성 관리자를 사용하여 UILabels , UIButtons 등과 같은 다른 UIControl에 사용자 정의 글꼴을 적용 할 수 있습니다. 작동중인 샘플 및 비디오 하단의 외부 링크를 참고하십시오.

  1. 내비게이션 컨트롤러에서 내비게이션 막대 선택

navbar

  1. Attributes Inspector에서 제목 글꼴 변경

제목 - 글꼴

Xcode에서 새 글꼴을 선택하기 전에 탐색 모음의 Bar Tint를 토글해야합니다.

메모 (주의 사항)

이것이 Xcode 7.1.1 이상에서 작동 함을 확인했습니다. ( 아래의 샘플을보십시오 )

  1. 글꼴이 적용되기 전에 탐색 막대 색조를 토글해야합니다 (Xcode의 버그처럼 보이며 다시 기본값으로 전환하여 글꼴이 고정됩니다)
  2. 시스템 글꼴을 선택할 경우 ~ 크기가 0.0이 아닌지 확인하십시오 (그렇지 않으면 새 글꼴이 무시됩니다)

크기

  1. 뷰 계층 구조에 하나의 NavBar 만있을 때 문제없이 작동하는 것처럼 보입니다. 같은 스택에있는 보조 NavBars는 무시됩니다. (마스터 탐색 컨트롤러의 navBar를 표시하면 다른 모든 사용자 정의 navBar 설정은 무시됩니다).

고챠 (deux)

이것들 중 일부는 반복되어있어 주목할 가치가 있음을 의미합니다.

  1. 때때로 스토리 보드 xml이 손상됩니다. 이를 위해서는 스토리 보드의 구조를 소스 코드 모드로 검토해야합니다 (스토리 보드 파일을 마우스 오른쪽 버튼으로 클릭하고 다른 이름으로 열기 ...)
  2. 경우에 따라 사용자 정의 런타임 속성과 연관된 navigationItem 태그가보기 컨트롤러 태그 대신보기 태그의 xml 하위 항목으로 설정되었습니다. 그렇다면 적절한 작동을 위해 태그 사이에서 제거하십시오.
  3. NavBar 색조를 토글하여 사용자 지정 글꼴이 사용되는지 확인하십시오.
  4. 동적 글꼴 스타일을 사용하지 않는 한 글꼴의 크기 매개 변수를 확인하십시오.
  5. 뷰 계층 구조가 설정보다 우선합니다. 스택 당 하나의 글꼴이 가능합니다.

결과

navbar-italic

견본

사용자 정의 글꼴 처리

참고 ~ 좋은 체크리스트 는 Code With Code 웹 사이트에서 찾을 수 있으며 샘플 다운로드 프로젝트를 볼 수 있습니다.

자신 만의 서체가 있고 스토리 보드에 사용하고 싶다면 다음 SO 질문 에 대한 답변이 필요합니다. 한 가지 대답은 이러한 단계를 식별합니다.

  1. 맞춤 글꼴 파일 (.ttf, .ttc) 가져 오기
  2. 글꼴 파일을 Xcode 프로젝트로 가져 오기
  3. app-info.plist에서 application.It이 제공하는 Fonts라는 키를 배열 유형으로 추가하고 모든 글꼴 파일 이름을 배열에 추가합니다 (참고 : 파일 확장자 포함).
  4. 스토리 보드에서 NavigationBar의 Attribute Inspector로 이동하여 Font select 영역의 오른쪽 아이콘 버튼을 클릭합니다. 팝업 패널에서 Custom to Font를 선택하고 임베디드 글꼴 이름을 선택합니다.

사용자 정의 글꼴 해결 방법

따라서 Xcode는 자연스럽게 UINavigationItem의 사용자 정의 글꼴을 처리 할 수있는 것처럼 보이지만 그 기능은 제대로 업데이트되지 않습니다 (선택된 글꼴은 무시됩니다).

UINavigationItem

이 문제를 해결하려면 다음을 수행하십시오.

한 가지 방법은 스토리 보드를 사용하여 수정하고 코드 줄을 추가하는 것입니다. 먼저 View Controller (탐색 항목 아님)에 UIView (UIButton, UILabel 또는 다른 UIView 하위 클래스)를 추가합니다. Xcode에서 현재 허용하지 않습니다. 그). 컨트롤을 추가 한 후 스토리 보드에서 글꼴을 수정하고 참조를 콘센트로 View Controller에 추가 할 수 있습니다. UINavigationItem.titleView에 해당 뷰를 할당하면됩니다. 필요한 경우 코드에 텍스트 이름을 설정할 수도 있습니다. 보고 된 버그 (23600285).

@IBOutlet var customFontTitleView: UIButton!

//Sometime later...    
self.navigationItem.titleView = customFontTitleView

주 -이 예는 내가 여기 에 게시 한 답변에서 파생되었습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow