2014-03-13 24 views
-1

我在一個格式爲0:00:00的視頻上有一個運行計時器。我希望字符1-9的寬度相同,以便在計時器更新時標籤不會四處移動。我從蘋果幻燈片中摘取了這段代碼,但我沒有運氣。除了「1」之外,每個角色似乎都是成比例的。我很難找到關於此的任何示例或文檔。我使用下面方法的返回值在UILabel上調用setFont。我正在嘗試使用的字體是GothamNarrow-Book。我通過@「GothamNarrow-Book」到這個方法。如何修改字體屬性以使字體在iOS中成比例?

-(UIFont*) getProportionalFontForTimerWithFont:(NSString*)fontName WithRatio:(CGFloat) fontRatio{ 
    UIFont *const existingFont=[UIFont fontWithName:fontName]; 
    UIFontDescriptor *const existingDescriptor=[existingFont fontDescriptor]; 

    NSDictionary *const [email protected]{ 
             UIFontDescriptorFeatureSettingsAttribute:@[ 
               @{ 

                UIFontFeatureTypeIdentifierKey: @(kNumberSpacingType), 
                UIFontFeatureSelectorIdentifierKey:@(kProportionalNumbersSelector) 
                }, 
               @{ 
                UIFontFeatureTypeIdentifierKey: @(kCharacterAlternativesType), 
                UIFontFeatureSelectorIdentifierKey:@(1) 
                }] 
             }; 

    UIFontDescriptor *const proportionalDescriptor=[existingDescriptor fontDescriptorByAddingAttributes:timeFeatureSettings]; 
    UIFont* proportionalFont=[UIFont fontWithDescriptor:proportionalDescriptor size:[existingFont pointSize]]; 

    return proportionalFont; 

} 
+0

爲什麼不使用比例字體,比如'Menlo'? –

+0

作爲設計決策,應用程序中隨處可以使用相同的字體。我也想在這裏使用它,但如果我無法弄清楚這一點,將不得不切換。 –

+0

我認爲問題是字體可能沒有成比例的選擇。你使用哪種字體? –

回答

2

我誤解了比例意味着什麼。將鍵從比例更改爲等寬更正解決了我的問題。

-(UIFont*) getProportionalFontForTimerWithFont:(NSString*)fontName WithRatio:(CGFloat) fontRatio{ 
    UIFont *const existingFont=[UIFont fontWithName:fontName]; 
    UIFontDescriptor *const existingDescriptor=[existingFont fontDescriptor]; 

    NSDictionary *const [email protected]{ 
             UIFontDescriptorFeatureSettingsAttribute:@[ 
               @{ 

                UIFontFeatureTypeIdentifierKey: @(kNumberSpacingType), 
                UIFontFeatureSelectorIdentifierKey:@(kMonospacedNumbersSelector) 
                }, 
               @{ 
                UIFontFeatureTypeIdentifierKey: @(kCharacterAlternativesType), 
                UIFontFeatureSelectorIdentifierKey:@(1) 
                }] 
             }; 

    UIFontDescriptor *const proportionalDescriptor=[existingDescriptor fontDescriptorByAddingAttributes:timeFeatureSettings]; 
    UIFont* proportionalFont=[UIFont fontWithDescriptor:proportionalDescriptor size:[existingFont pointSize]]; 

    return proportionalFont; 

} 
+0

你也可以使用具有字體描述符的NSFontMonoSpaceTrait特性.-) –

0

由於您總是繪製固定數量的字符,爲什麼不只是手動定位和繪製每個字符呢?你甚至可以讓每一個都是自己的UILabel或其他控件。

0

步驟一:針標籤

只需使用自動佈局引腳的高度和寬度,右下角。這將確保您的標籤不會移動。

第二步:修改字體

在情節串連圖板,設置自動收縮的UILabel的屬性,以最小字體規模。然後設置你想要的%尺寸,你應該很好去。

+0

我認爲這個標籤可能並不是技術上的動態,只是字符的寬度不成比例而導致文本左右移動。另外,我沒有使用storyboard,但是我我們可以看看這個 –