2012-04-17 44 views
5

我爲UIButton的標題使用自定義字體。它的作品,除了這個特殊的字體,第一個字符的一部分被裁剪。例如:裁剪後的UIButton標題

enter image description here

我嘗試設置contentEdgeInsets和titleEdgeInsets似乎並不能得到它不會被截斷。我也嘗試將button.titleLabel.clipsToBounds屬性設置爲NO;

任何建議將不勝感激。

回答

8

所以我剛剛結束了設置UIButton標題爲零,並將我自己的UILabel作爲子視圖添加到UIButton。我將UILabel框架設置爲與按鈕相同的尺寸,並將其設置爲居中。

不是我確定的最優雅的解決方案,但它完成了工作。

+2

這真的很糟糕,這是唯一的解決方案。發生這種情況的原因是,字體設計師故意將其字母的邊界編碼爲小於實際值,以便它們將嵌套。這對於斜體和草書字體尤其重要。我希望蘋果公司在計算UIButton標籤的寬度時不會那麼「精確」,或者至少讓我們自己去改變它。我正在提交一份錯誤報告,你也應該。 – Bek 2013-03-07 18:26:20

1

它看起來像我的喜歡你的內容是funkily調整。如果標籤的框架不能直接訪問,請使用[button setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];來嘗試修復水平對齊問題。

+0

居然是它被設置爲中心。如果我將其設置爲正確的理由,它仍然是裁剪。 – 2012-04-17 23:02:37

9

雖然傑斯華的解決方案工作正常,但它不是我眼中的最佳選擇。 我寧願推薦子類UIButton並覆蓋它的layoutSubviews方法。以上答案

-(void)layoutSubviews 
{ 
    [super layoutSubviews]; 

    CGRect frame = self.titleLabel.frame; 
    frame.size.height = self.bounds.size.height; 
    frame.origin.y = self.titleEdgeInsets.top; 
    self.titleLabel.frame = frame; 
} 
+0

這很容易做到,只需創建一個類(UIButton的子類),複製粘貼,分配給按鈕的自定義類。謝謝! – 2014-11-19 19:24:15

+0

這應該是被接受的答案。簡單而優雅。 – 2015-05-05 08:06:40

+0

完美謝謝 – 2015-06-24 09:34:47

0

斯威夫特代碼:

override func layoutSubviews() { 
    super.layoutSubviews() 
    titleLabel?.frame = CGRect(x: bounds.origin.x, y: titleEdgeInsets.top, width: frame.width, height: bounds.size.height) 
}