UIButton 사용자 정의 글꼴 수직 정렬


118

내가 야해 UIButton때 내보기로드를 설정 사용자 지정 글꼴을 사용하는 :

- (void)viewDidLoad
{
    [super viewDidLoad];    
    self.searchButton.titleLabel.font = [UIFont fontWithName: @"FONTNAME" size: 15.0 ];
}

내가 가진 문제는 글꼴이 중심선 위로 떠 다니는 것처럼 보인다는 것입니다. 이 줄을 주석 처리하면 기본 글꼴이 세로 중앙에 잘 표시됩니다. 그러나 사용자 정의 글꼴로 변경하면 수직 정렬이 깨집니다.

사용자 지정 글꼴을 사용하는 표 셀에서도 동일한 문제가 발생합니다.

사용자 지정 글꼴이 다른 글꼴만큼 크지 않다는 것을 뷰 어딘가에 알려야합니까?

편집 : 방금 사용중인 글꼴이 Windows TrueType 글꼴이라는 것을 깨달았습니다. Mac의 TextEdit에서 잘 사용할 수 있지만 내 앱의 정렬에만 문제가 있습니다.

버튼 텍스트가 세로로 가운데에 있지 않습니다.


나는이 폰트 (.OTF하지 .TTF)와 같은 문제를 겪고 : fontsquirrel.com/fonts/bebas-neue
닐 Ehardt

답변:


312

UILabel에 올바르게 표시되지 않는 사용자 정의 설치 글꼴 에서 유사한 문제가 논의되었습니다 . 주어진 해결책이 없습니다.

다음은 UILabel, UIButton 등에서 동일한 문제가 발생한 사용자 지정 글꼴에 대해 작동했던 솔루션입니다. 글꼴의 문제는 ascender 속성이 시스템 글꼴의 값에 비해 너무 작다는 사실로 밝혀졌습니다. Ascender는 글꼴 문자 위의 세로 공백입니다. 글꼴을 수정하려면 Apple Font Tool Suite 명령 줄 유틸리티 를 다운로드해야합니다 . 그런 다음 글꼴을 가져 와서 다음을 수행하십시오.

~$ ftxdumperfuser -t hhea -A d Bold.ttf

이렇게하면 Bold.hhea.xml. 텍스트 편집기로 열고 ascender속성 값을 늘리십시오 . 자신에게 가장 적합한 정확한 값을 찾기 위해 약간의 실험을해야합니다. 제 경우에는 750에서 1200으로 변경했습니다. 그런 다음 다음 명령 줄을 사용하여 유틸리티를 다시 실행하여 변경 사항을 다시 ttf 파일에 병합합니다.

~$ ftxdumperfuser -t hhea -A f Bold.ttf

그런 다음 앱에서 결과 ttf 글꼴을 사용하십시오.

OS X El Capitan

Apple Font Tool Suite Installer는 바이너리 파일을 보호 된 디렉토리에 설치하려고하기 때문에 SIP로 인해 OSX El Capitan에서 더 이상 작동하지 않습니다 . 수동으로 추출해야합니다 ftxdumperfuser. 첫 번째 이후의 포장을 풀고 로컬 디렉토리에 데미지에서 PKG 복사 OS X Font Tools.pkg

~$ xar -xf OS\ X\ Font\ Tools.pkg

이제 폴더 fontTools.pkg로 이동하십시오.

~$ cd fontTools.pkg/

페이로드 추출

~$ cat Payload | gunzip -dc | cpio -i

이제 ftxdumperfuser바이너리가 현재 폴더에 있습니다. /usr/local/bin/다음과 같이 터미널 응용 프로그램 내부의 모든 폴더에서 사용할 수 있도록 이동할 수 있습니다.

~$ mv ftxdumperfuser /usr/local/bin/

4
+1 멋진 팁! 다음은 Ascenders 및 Descenders에 대한 정보입니다. typophile.com/node/13081
tidwall

35
OTF 파일에서도 똑같이 잘 작동했습니다.
mharper

2
이 솔루션으로 수정 된 사용자 지정 글꼴을 사용하고 여러 줄이있는 UITextView에서 텍스트를 설정하면 줄 간 거리가 너무 커집니다.
The dude

5
iOS 7 베타 6에서 글꼴 정렬 문제가 해결되었습니다. 이 수정을 할 경우 그래서 누가 알 겠어,하지만 그래서, 7은 아직 베타 버전입니다 .... 아이폰 OS 6 좋은,하지만 아이폰 OS 7 깨진 것
tybro0103을

3
Xcode 9 용 글꼴 도구가 업데이트되었으며 High Sierra에 제대로 설치됩니다. 직접 링크 : developer.apple.com/download/more/?=font
안드레스 PIZA Bückmann

49

제목이 아닌 상위 콘텐츠를 조정하는 문제를 해결했습니다.

예 : button.contentEdgeInsets = UIEdgeInsetsMake (10.0, 0.0, 0.0, 0.0);

행운을 빕니다!


15
이것은 글꼴을 편집하는 것보다 간단 해 보였던 저에게 좋은 빠른 솔루션이었습니다. myButton.titleLabel.font = [UIFont fontWithName : @ "FontName"size : 20.0]; myButton.contentEdgeInsets = UIEdgeInsetsMake (3.0, 0.0, 0.0, 0.0);
Jamie Hamick

훌륭한! 감사합니다! 내 문제는 약간 달랐고, 기본 글꼴을 사용하는 간단한 + 및-버튼이 있었고 중앙보다 낮게 보였고 여기에서 솔루션을 사용하여 텍스트를 약간 올릴 수 있었기 때문에 눈에 띄지 않았습니다.
Patrick T Nelson

7

글꼴에 따라 다를 수 있으므로 이것이 도움이 될지 확실하지 않지만 기준선이 잘못 정렬되었을 수 있습니다.

self.searchButton.titleLabel.baselineAdjustment = 
    UIBaselineAdjustmentAlignCenters;

3
글꼴 크기가 minimumScaleFactor로 조정될 때 UIButton의 titleLabel에서 잘 작동합니다
smitt04


2

Interface Builder에서 시도해 볼 수 있습니다. 방법에 대한 스냅 샷은 다음과 같습니다.

여기에 이미지 설명 입력 여기에 이미지 설명 입력

보시다시피 IB에서이 작업을 수행하는 것은 고유 한 이점이 있습니다.


1
해당 설정은 이미 제자리에 있으며 IB에서는 글꼴이 세로로 표시되지만 기본 글꼴로 표시됩니다. 내 앱을 실행할 때만 내 사용자 지정 글꼴이 나타나고 세로로 가운데에 있지 않습니다
Pete

IB에서 "사용자 정의 글꼴"을 설정합니까? iOS 글꼴에서 지원됩니까?
Srikar Appalaraju 2011 년

글꼴은 IB로 설정되며 원본 게시물에 지정된 코드로도 설정됩니다. IB의 글꼴 선택 드롭 다운에는 있지만 실제로 IB 화면 모형에는 나타나지 않습니다.
Pete

2

파티에 늦었지만 이 문제가 N 번째로 나에게 맞았을 때, 내가 찾은 가장 간단한 해결책 인 using Python FontTools를 게시 할 것이라고 생각 했습니다 .

  1. 시스템에서 사용할 수없는 경우 Python 3을 설치합니다.

  2. FontTools 설치

    pip3 install fonttools

    FontTools 에는 XML과의 변환을 가능하게하는 TTX 도구가 포함되어 있습니다.

  3. 동일한 폴더에서 글꼴을 .ttx로 변환하십시오.

    ttx myFontFile.otf

  4. .ttx에 필요한 편집을 수행하고 다음 단계에서 대체 될 .otf 파일을 삭제하십시오.

  5. 파일을 .otf로 다시 변환

    ttx myFontFile.ttx


동기 부여 : kolyuchi솔루션 은 불완전 하며이 확장 된 설치 흐름 에도 불구하고 실행 ftxdumperfuser하면 10.15.2 Catalina에서 오류가 발생했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.