1

UILabel開始時にもっとボタンを表示する必要がありUILineBreakModeTailTruncationます。つまり、「」が表示されるたびに、...いくつかのアクションを含む「more」ボタンを表示する必要があります。

私がしているのは

float textWidth = [myString sizeWithFont:myLabel.font].width;
if (textWidth > myLabel.frame.size.width)
{
[moreButton setHidden:FALSE];
}
else
{
[moreButton setHidden:TRUE];
}

しかし、私の問題は、ラベルの行数が2に設定されている場合、ラベルの最初の行がレンダリングされるたびに、より多くのボタンが表示されることです。

だから私は試しました

if (textWidth > 2*myLabel.frame.size.width)
{
[moreButton setHidden:FALSE];
}
else
{
[moreButton setHidden:TRUE];
}

これはほとんどの場合機能します。ただし、テキスト幅が2 * labelWidthと同じ場合は、より多くのボタンが表示されます。これに直接的な方法はありますか?

4

3 に答える 3

0

幅が同じであるため、文字列の高さと比較します。

CGSize maximumSize = CGSizeMake(myLabel.frame.size.width, 500); //provide fixed label's width as we will have have fit text in that width. I have used approximately. height can be anything more view' height so take like that
CGSize strSize = [str sizeWithFont:[UIFont systemFontSize] constrainedToSize:maximumSize lineBreakMode:UILineBreakModeCharacterWrap];

if(strSize.height > 40) //Calulate height of two lines...
{
  [moreButton setHidden:NO]; //more than 2 lines
}
else
{
   [moreButton setHidden:YES];//less than 2 lines
}
}
于 2012-08-27T12:36:33.383 に答える
0

ConstrainedToSize バリアントを試してください。

CGSize maxSize = CGSizeMake (myLabel.frame.size.width, 9999);  // a really tall frame

// this will give you the actual size of your string
CGSize actualSize = [myString sizeWithFont:myLabel.font constrainedToSize:maxSize lineBreakMode:UILineBreakModeWordWrap];

if (actualSize.height > myLabel.frame.size.height)
{
 // show your more button
}
于 2012-08-27T12:30:58.957 に答える
0

この関数を使用して、文字列のサイズを取得できます。

CGSize size=[myLabel.text sizeWithFont:[UIFont systemFontOfSize:h] constrainedToSize:CGSizeMake(maxWidth, maxHeight) lineBreakMode:UILineBreakModeTailTruncation];

他の機能もチェックする必要がありsizeWithFont:ます。

于 2012-08-27T12:40:42.757 に答える