NSView изменение размера - PullRequest
0 голосов
/ 09 апреля 2011

У меня есть NSView с NSTextField в нем.Проблема в том, что каждый раз перед отображением представления размер NSTextField может меняться, и я хочу, чтобы размер NSView изменялся вместе с ним.Таким образом, если текстовое поле имеет длину 2 строки, nsview будет маленьким (просто окружать текстовое поле), но когда оно длиной 10 строк, я не хочу, чтобы размер представления обрезал текстовое поле, я хочу, чтобы представление увеличивалось вместе с ним.

Как я могу это сделать?Спасибо.

Ответы [ 2 ]

0 голосов
/ 23 января 2016

Вам необходимо установить приоритеты "contentHugging and contentCompression".

Короче говоря:

contentHugging: sets the preference where a control resists being made *larger* than it's intrinsic size

contentCompression: sets the preference where a control resists being made *smaller* than it's intrinsic size

У Apple есть ссылка здесь:

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/WorkingwithConstraintsinInterfaceBuidler.html

В частности, прокрутите вниз до раздела Setting Content-Hugging and Compression-Resistance Priorities.

Это то, что имеет дело с textFields и т. Д. ... отсечением (т. Е. Когда текстовое поле имеет "some testValue", становится "some testV ..." и т. Д ...

0 голосов
/ 09 апреля 2011

Это то, что я использую в своем табличном представлении, но оно должно в равной степени относиться к вашей ситуации:

    float textLabelWidth = 190;

    NSString *Text = [[deals objectAtIndex:[indexPath section]] objectForKey:@"title"];
    UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:13.0];
    CGSize constraintSize = CGSizeMake(textLabelWidth, MAXFLOAT);
    CGSize labelSize = [Text sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

    return labelSize.height + 20; // <--- this is what your NSView's height should be, just edit the textLabelWidth and padding (in this case 20) to whatever you desire.

Надеюсь, это поможет!

...