0

UIPopoverController を使用して UITableViewController を表示します。テーブル ビューには、長さが不明な名前のリストが表示されます (ボブまたはアレクサンダーの可能性があります)。

ポップオーバーの高さを変える方法は知っていますが、名前が切り捨てられないように幅を変える方法がわかりません。

名前の幅を把握して、ポップオーバーをその幅に設定して、名前がポップオーバーからにじみ出ないようにする必要があります。

ここに画像の説明を入力

何か案は?

4

2 に答える 2

1

文字列の幅を取得し、UITable をその幅に設定します。幅を取得するために追加できるメソッドを次に示します。カテゴリまたはクラスに追加できます。ここからコードを取得しました。

- (CGFloat)widthOfString:(NSString *)string withFont:(NSFont *)font {
     NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:font, NSFontAttributeName, nil];
     return [[[NSAttributedString alloc] initWithString:string attributes:attributes] size].width;
 }

このようにして、将来変更する場合に備えて、使用しているフォントを指定できます。(フォントが異なれば、明らかに幅も異なります)。

于 2013-01-30T22:29:25.403 に答える
0

おそらくあなたは名前の配列を持っています。名前のリストを列挙し、それぞれに必要な長さを決定してから、最大のものを格納し、それを目的の幅として適用します。超えてはならない「最大サイズ」を定義する必要があります。これらの線に沿ったメソッドは、適切なものを返す必要があります。

- (CGFloat)suitableWidthForLabel:(UILabel *)nameLabel withNames:(NSArray *)arrayOfNames
{

    CGFloat suitableWidth = 100.0f; // A reasonable starting point
    CGSize maximumSize = CGSizeMake(600.0f, nameLabel.frame.size.height);
    UIFont *labelFont = [nameLabel font];

    for (NSString *aName in arrayOfNames)
    {

        CGSize expectedLabelSize = [aName sizeWithFont:labelFont
                                        constrainedToSize:maximumSize
                                            lineBreakMode:nameLabel.lineBreakMode];

        suitableWidth = MAX(suitableWidth, expectedLabelSize.width);
    }

    return suitableWidth; // This will be the largest size you may need to accommodate
}
于 2013-01-30T22:39:35.757 に答える