programing

iOS 7의 사용자 지정 글꼴

javajsp 2023. 10. 6. 20:54

iOS 7의 사용자 지정 글꼴

게임을 개발 중인데 앱에서 커스텀 폰트를 사용하고 싶습니다.그게 중요하다면 스프라이트 키트를 사용하고 있습니다.이 https://github.com/deni2s/IBCustomFonts 을 사용해 보았지만 이 글꼴 http://www.fontspace.com/freaky-fonts/emulogic 에서 작동할 수 없습니다.

여러가지 시도를 해보았고, 앱의 info.plist에 폰트를 등록했습니다.무슨 일인지 아는 사람?

우선 SpriteKit는 아무런 차이가 없다고 생각합니다.

  1. .ttf를 프로젝트에 복사하려면 .ot로 글꼴이 필요합니다.예를 들어 Supporting Files(파일 지원)에 있습니다.
  2. .plist 파일을 편집해야 합니다.응용프로그램에서 제공하는 글꼴 키를 목록에 추가하고 항목 0에서 복사한 글꼴의 정확한 파일 이름을 확장명의 지원 파일에 복사합니다.예를 들어, "JosefinSansStd-Light_0.otf"
  3. 앱에 가져온 글꼴이 앱 자체에 포장되어 있는지 확인합니다.대상을 선택한 다음 단계 빌드, 번들 리소스 복사를 선택하여 이 작업을 수행합니다.글꼴이 보이지 않으면 지원 파일에서 끌어다 놓습니다.

마지막으로, 글꼴에 사용 가능한 이름을 보기 위해 앱이 시작될 때 모든 글꼴을 나열하려고 합니다.당신은 이 작은 코드를 가지고 그렇게 할 것입니다.

NSArray *fontFamilies = [UIFont familyNames];
for (int i = 0; i < [fontFamilies count]; i++)
{
    NSString *fontFamily = [fontFamilies objectAtIndex:i];
    NSArray *fontNames = [UIFont fontNamesForFamilyName:[fontFamilies objectAtIndex:i]];
    NSLog (@"%@: %@", fontFamily, fontNames);
}

예를 들어 인쇄된 결과에서 글꼴을 검색하면 "Josefin"을 검색하고 실제 글꼴 이름은 "JosefinSansStd-Light"입니다.그런 다음 글꼴만 사용하면 됩니다.

UIFont *customFont = [UIFont fontWithName:@"JosefinSansStd-Light" size:20];

iOS8에서는 글꼴을 프로젝트에 직접 추가하면 인터페이스 빌더에 볼 수 있습니다.코드를 수정하여 iOS7의 글꼴을 프로그래밍 방식으로 설정하고 xCode6 인터페이스 빌더에서 선택합니다.PS. xCode6의 인터페이스 빌더는 아래 코드에 복사 붙여넣기 할 수 있는 올바른 글꼴 이름을 제공합니다.

#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
if (SYSTEM_VERSION_LESS_THAN(@"8.0")) {
    UIFont *customFont = [UIFont fontWithName:@"OpenSans-Light" size:32];
    self.registerLabel.font = customFont;  
}

커스텀 폰트 사용에는 문제가 없습니다, 제가 했습니다.다음 단계를 따릅니다.

  1. info.plist에 글꼴을 등록하고 "응용프로그램에서 제공하는 글꼴" 항목을 추가합니다.글꼴 이름이 아닌 글꼴 파일 이름을 입력합니다.font.ttf처럼 (이미 하신 것 같은데요)
  2. 프로젝트 탐색기에서 프로젝트로 이동하고 프로젝트 이름을 클릭한 후 "빌드 페이즈"로 이동한 다음 "번들 자원 복사"에서 아래를 내려다보면 파일이 많고 "+" 기호를 검색합니다.프로젝트 파일과 함께 팝업 창이 열립니다.글꼴 파일을 검색하여 번들에 추가합니다.
  3. 마지막으로 글꼴 이름을 확인합니다.코드에 사용할 때는 파일 이름이 아닌 글꼴 이름을 사용해야 합니다.글꼴 이름을 알고 싶으면 Finder에서 글꼴 파일을 두 번 클릭하면 글꼴을 보여주는 창이 열립니다.창 제목을 확인하십시오. 그것이 사용해야 하는 글꼴 이름입니다.

그리고 조언을 해주세요. 그 이름을 당신의..에 매크로로 추가하세요.prefix.pch 파일입니다.글꼴을 여러 번 사용해야 한다면 프로젝트에서 사용하기가 더 쉬울 것입니다.

당신이 가지고 있던 문제는 폰트를 제대로 등록했는데 앱 번들에 복사가 되지 않았다는 것입니다.그래서 앱이 실행되었을 때 폰트를 찾을 수 없었습니다.그렇기 때문에 2단계가 중요합니다.나는 처음에 그것을 알아내기 위해 많은 시간을 보냈습니다 :)

이를 신속하게 달성하기 위해서는

앱을 시작할 때 글꼴을 모두 나열하려면 글꼴에 사용 가능한 이름을 확인해야 합니다.이 작은 코드로 할 수 있습니다.

    UIFont.familyNames.forEach {
        print("fontFamily: \($0), fonts: \(UIFont.fontNames(forFamilyName: $0))")
    }

저는 여러 번 시도해 보았지만 일에 대한 이러한 답을 얻을 수 없었습니다.사용자 지정 글꼴이 있는 유일한 방법은 허용된 답변의 지침을 따르고 글꼴을 사용하는 스토리 보드에 숨겨진 레이블을 만드는 것입니다.폰트를 프로그램적으로 사용할 수 있습니다.이상하고 까칠한 건 알지만 내겐 통했어요.

Xcode 6을 사용하는 경우에는 매우 간단합니다.추가만 하면 됩니다.font폴더를 프로젝트에 추가하고 글꼴을 폴더에 추가하면 됩니다.

enter image description here

위의 어떤 방법도 사용자에게 적합하지 않고 사용자 지정 글꼴만 "프로그램적으로" 사용한다면(즉, 어떤 xib에서도 사용하지 않은) 적어도 한 번은 하나의 xib 어디에서나 사용해야 할 것입니다.

(P.S. Stuart Clark - 이미 대답했으니, 제발 저를 칭찬하지 마세요.하지만 그의 대답이 빗나갔기 때문에 제가 읽을 때 명확하지 않았기 때문에 다시 구해서 별도의 답으로 올리기로 했습니다.xib에서 커스텀 폰트를 테스트하다가 우연히 이 솔루션을 알게 되었고, 다른 곳에서 프로그램적으로 작동하는 것을 보았지만 xib에서 폰트를 제거하자 프로그램적으로 작동이 멈췄습니다.)

스위프트 3용으로 업데이트되었습니다.

let fontFamilies:[String] = UIFont.familyNames

for fontFamily: String in fontFamilies {
    let fontNames: [String] = UIFont.fontNames(forFamilyName: fontFamily)
    print("\(fontFamily)  \(fontNames)");
}

아마도 빠른 수정이 가능할 것입니다. 폰트가 이미 작동했을 때 이 작업을 수행했지만 새로운 예를 들어.레이블에 원하는 글꼴이 표시되지 않았습니다.

깨끗하고, 깊고, 깨끗하고, 비어있는 파생 데이터 폴더.

please try below code.
@end
@implementation UILabel (CustomFont)
-(void)setFontName:(NSString *)value{
CGFloat newsize = (self.font.pointSize * [UIScreen mainScreen].bounds.size.width)/320;
[self setFont:[UIFont fontWithName:self.font.fontName size:newsize]];
}
@end
@implementation UITextField (CustomFont)
-(void)setFontName:(NSString *)value{
CGFloat newsize = (self.font.pointSize * [UIScreen mainScreen].bounds.size.width)/320;
[self setFont:[UIFont fontWithName:self.font.fontName size:newsize]];
}
@end
@implementation UIButton (CustomFont)
-(void)setFontName:(NSString *)value{
CGFloat newsize = (self.titleLabel.font.pointSize * [UIScreen mainScreen].bounds.size.width)/320;
[self.titleLabel setFont:[UIFont fontWithName:self.titleLabel.font.fontName size:newsize]];
}
@end
@end

@interface UILabel (CustomFont)
-(void)setFontName:(NSString *)value;
@end
@interface UITextField (CustomFont)
-(void)setFontName:(NSString *)value;
@end
@interface UIButton (CustomFont)
-(void)setFontName:(NSString *)value;
@end

언급URL : https://stackoverflow.com/questions/21737788/custom-fonts-in-ios-7