文字列のサイズを調整して高さのフィット(1行)を最大化し、lineBreakMode:UILineBreakModeClipが実行する必要がある過剰な幅が(グリフの中間のように)カットオフされるようにしました。代わりに、テキストが収まる(予期しない、または望まない)完全な文字のみを描画することにより、テキストが切り捨てられる(?)ように見えます。基本的に:
[label setNumberOfLines:1];
label.font = [UIFont systemFontOfSize:64.0f];
label.lineBreakMode = UILineBreakModeClip;
[label setText:@"ABCDEIIIIII"];
related, more complicated questionはこれに対する解決策を示します。大きな幅のラベルを作成し、それを目的の幅のUIViewに追加します。 (次に、UIViewをアプリに追加します。)UIViewのclipsToBoundsプロパティを設定すると、必要な中間グリフクリッピングが得られます。
説明:ラベルを100pxで切り捨てるとします。 UILabelの幅を200に設定すると、希望する100ピクセルが適切にレンダリングされます。 200で完全な文字で切り捨てるかどうかは関係ありません。このラベルを100pxのUIViewに追加し、clipsToBoundsを設定すると、必要なラベルの100pxのみが表示され、その後、グリフの途中で切り取られます。
説明するために、他の投稿から転用:
UIView *topContainer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 50)];
topContainer.clipsToBounds = YES;
topContainer.opaque = NO;
topContainer.backgroundColor = [UIColor clearColor];
UILabel *topLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 50)];
[topLabel setText:@"ABCDEIIIIII"];
topLabel.opaque = NO;
[topContainer addSubview:topLabel];
[self.view addSubview:topContainer];