Android提供了一個屬性textScaleX
,允許在保持字體高度的同時水平縮放文本。我對Android應用程序的使用非常廣泛(特別是對於不像英文的緊湊語言),並希望在ios中找到類似的東西。ios:無柵格水平縮放字體
很明顯,我可以將文本繪製到圖形上下文中並將其作爲圖像進行縮放,但這似乎是一個相當尷尬的解決方案,它將所有文本項目轉換爲ImageView-s。
是否有原生水平縮放文本的方式?例如,可能有一種選擇是基於系統字體創建自定義字體,並更改負責文本寬度的參數。
Android提供了一個屬性textScaleX
,允許在保持字體高度的同時水平縮放文本。我對Android應用程序的使用非常廣泛(特別是對於不像英文的緊湊語言),並希望在ios中找到類似的東西。ios:無柵格水平縮放字體
很明顯,我可以將文本繪製到圖形上下文中並將其作爲圖像進行縮放,但這似乎是一個相當尷尬的解決方案,它將所有文本項目轉換爲ImageView-s。
是否有原生水平縮放文本的方式?例如,可能有一種選擇是基於系統字體創建自定義字體,並更改負責文本寬度的參數。
你可以只縮放包含文本的UILabel或UITextView的:
UILabel *label = ...
label.transform = CGAffineTransformMakeScale(0.8,1); //reduced size in x direction by 20%
如果這還不夠,你可以看看NSLayoutManger,有可能是一些在那裏。
使用UIFontDescriptor
的matrix
屬性。
下面是一個示例,它採用中的UILabel
並將其字體水平拉伸1.3倍。
UIFont* baseFont = self.label.font;
UIFontDescriptor *baseDescriptor = baseFont.fontDescriptor;
UIFontDescriptor *newDescriptor = [baseDescriptor fontDescriptorWithMatrix:
CGAffineTransformMakeScale(1.3, 1.0)];
UIFont* newFont = [UIFont fontWithDescriptor:newDescriptor size:0.0];
self.label.font = newFont;
謝謝,尼爾斯和庫爾特。兩個答案都很有用。 Nils的方法更簡單,更接近textScaleX的想法。 Kurt的解決方案允許爲多個視圖創建一種字體。另外(糾正我,如果我錯了),直接應用轉換時,文本在渲染時縮放,而與自定義字體文本繪製預縮放,這使得它看起來更好。我接受Nil的簡單回答和+1給Kurt一個好主意。 – cyanide