簡體   English   中英

UIButton 自定義字體垂直對齊

[英]UIButton custom font vertical alignment

我有一個使用自定義字體的UIButton ,該字體在我的視圖加載時設置:

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

我遇到的問題是字體似乎漂浮在中心線上。 如果我注釋掉這一行,默認字體會很好地垂直居中顯示。 但是更改為自定義字體會破壞垂直對齊。

我在帶有自定義字體的表格單元格上也遇到了同樣的問題。

我是否需要在某處告訴視圖自定義字體不如其他字體高?

編輯:我剛剛意識到我使用的字體是 Windows TrueType 字體。 我可以在 Mac 上的 TextEdit 中很好地使用它,只是我的應用程序中的對齊有問題

按鈕文本不垂直居中

在 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

由於SIP ,Apple Font Tool Suite 安裝程序不再在 OSX El Capitan 上工作,因為它試圖將二進制文件安裝到受保護的目錄中。 您必須手動提取ftxdumperfuser 首先將 pkg 從 dmg 復制到本地目錄,然后解壓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);

祝你好運!

不確定這是否會有所幫助,因為它可能取決於您的字體,但可能是您的基線未對齊。

self.searchButton.titleLabel.baselineAdjustment = 
    UIBaselineAdjustmentAlignCenters;

我認為這是最好的答案。 沒有玩上升器,numberOfHMetrics 等......只需通過Glyphs應用程序導入導出並完成工作。 感謝這個答案: https : //stackoverflow.com/a/16798036/1207684

聚會遲到了,但是當這個問題第 N 次襲擊我時,我想我會發布我找到的最簡單的解決方案:使用Python FontTools

  1. 如果 Python 3 在您的系統上不可用,請安裝它。

  2. 安裝字體工具

    pip3 install fonttools

    FontTools包含一個 TTX 工具,可以實現與 XML 的轉換。

  3. 在同一文件夾中將您的字體轉換為 .ttx

    ttx myFontFile.otf

  4. 對 .ttx 進行必要的編輯並刪除 .otf 文件,因為這將在下一步中替換。

  5. 將文件轉換回 .otf

    ttx myFontFile.ttx


動機: kolyuchi解決方案是不完整的,即使有這個擴展的安裝流程,在 10.15.2 Catalina 上運行ftxdumperfuser導致錯誤。

您可以在 Interface Builder 中嘗試一下。 這是如何做到這一點的快照 -

在此處輸入圖片說明在此處輸入圖片說明

正如您所看到的,在 IB 中嘗試這樣做有其自身的好處。

注意:顯然有一個比這更好的答案(上面有數百票的票數)

除了編輯字體文件之外,我找不到真正的答案。 我不知道怎么做,也沒有時間,所以我只是把我的照片縮小了,調整細胞使它看起來像是正確對齊的。

我想是一個骯臟的小黑客,但它的工作原理很好。

這是導致問題的唯一字體,因此問題必須與字體文件有關。

實際上並不是我的結論,這是另一個SO帖子,但我無法在任何地方找到它,如果我再次遇到它,我會堅持在評論中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM