program tip

UIButton 사용자 정의 글꼴 세로 정렬

radiobox 2020. 7. 24. 20:22
반응형

UIButton 사용자 정의 글꼴 세로 정렬


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

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

내가 가진 문제는 글꼴이 중심선 위로 떠 다니는 것입니다. 이 줄을 주석 처리하면 기본 글꼴이 세로 중앙에 잘 나타납니다. 그러나 사용자 정의 글꼴로 변경하면 세로 정렬이 중단됩니다.

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

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

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

세로 방향으로 중앙에 있지 않은 버튼 텍스트


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

다음은 UILabel, UIButton 등에서 동일한 문제가있는 사용자 정의 글꼴에서 작동하는 솔루션입니다. 글꼴 문제는 시스템 글꼴 값에 비해 어 센더 속성이 너무 작다는 사실로 밝혀졌습니다. 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 엘 캐피 탄

Apple Font Tool Suite 설치 프로그램은 바이너리 파일을 보호 된 디렉토리에 설치하려고하기 때문에 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/

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

예를 들면 다음과 같습니다. button.contentEdgeInsets = UIEdgeInsetsMake (10.0, 0.0, 0.0, 0.0);

행운을 빕니다!


이것이 가장 좋은 대답 이라고 생각 합니다. 어 센더, numberOfHMetrics 등을 사용하지 않고 Glyphs 응용 프로그램으로 가져 오기-내보내기 하고 작업을 완료했습니다. 이 답변 덕분에 https://stackoverflow.com/a/16798036/1207684


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

self.searchButton.titleLabel.baselineAdjustment = 
    UIBaselineAdjustmentAlignCenters;

Interface Builder에서 시도해 볼 수 있습니다. 다음은이를 수행하는 방법에 대한 스냅 샷입니다.

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

보시다시피 IB 에서이 작업을 시도하면 자체 장점이 있습니다.


참고 : 이보다 더 나은 답변이 분명히 있습니다 (위의 수백 개의 투표권을 가진 사람).

글꼴 파일을 편집하는 것 외에는 이것에 대한 실제 답변을 찾을 수 없습니다. 어떻게 해야할지 모르겠고 시간이 없었기 때문에 그림을 더 좁게 만들고 셀이 올바르게 정렬 된 것처럼 보이도록 셀을 조정했습니다.

내가 생각하는 더러운 작은 핵,하지만 작동하고 괜찮습니다.

이 글꼴은 문제를 일으킨 유일한 글꼴이므로 글꼴 파일에 문제가 있어야합니다.

실제로이 결론을 내린 것은 아니 었습니다. 이것은 또 다른 게시물입니다. 그러나 그것을 다시 만나면 주석에 넣을 것입니다.

참고 URL : https://stackoverflow.com/questions/7535498/uibutton-custom-font-vertical-alignment

반응형