2013-10-25 3 views
1

Я пытаюсь создать пользовательскую ячейку, которая состоит из нескольких UILabels. Первый ярлык может содержать одну или несколько строк, поэтому мне нужно изменить размер метки в соответствии с количеством строк (после установки количества строк в 0, поэтому будет задействована многострочная линия).Monotouch - вычислить высоту UILabel

Я попытался установить sizeToFit(), но изменил выравнивание и ширину моей метки.

Я нашел this answer

, но я не знаю, как преобразовать его в C#.

Может ли кто-нибудь указать мне пример? (Я уже попытался погуглить это отклонение от курса)

Это метод по ссылке:

// UILabel *myLabel; 

CGSize labelSize = [myLabel.text sizeWithFont:myLabel.font 
         constrainedToSize:myLabel.frame.size 
          lineBreakMode:UILineBreakModeWordWrap]; 

CGFloat labelHeight = labelSize.height; 


int lines = [myLabel.text sizeWithFont:myLabel.font 
       constrainedToSize:myLabel.frame.size 
        lineBreakMode:UILineBreakModeWordWrap].height/16; 
     // '16' is font size 

ответ

4
var size = myLabel.StringSize("Some really long string", myLabel.Font, myLabel.Frame.Size, UILineBreakMode.CharacterWrap); 
var lines = size.Height/myLabel.Font.CapHeight; 
+0

Спасибо, это действительно помогло! –

+0

Когда я попробовал, я получаю сообщение об ошибке: StringSize не принимает 7 параметров. Проверено в сборке для декларации: . public static CGSize StringSize (этот NSString Это, шрифт UIFont, nfloat minFontSize, ref nfloat actualFontSize, nfloat forWidth, UILineBreakMode lineBreakMode); Но он также упомянул о своем устаревании в ios 7.0 Любые альтернативные решения очень ценятся! Благодарю. – coder284

Смежные вопросы