Изменение размера содержимого UITableViewCell при появлении кнопки удаления - PullRequest
4 голосов
/ 08 декабря 2010

Есть ли способ использовать маски автоматического изменения размера для перемещения моего контента, чтобы кнопка удаления не закрывала его? Гугл сказал мне, что мне нужно установить маску авторазмера UIViewAutoresizingFlexibleRightMargin в моем подпредставлении. Мне кажется, что UIViewAutoresizingFlexibleWidth действительно имеет больше смысла; хотя я пробовал их обоих, и ни один из них не работает.

Представление, которое я пытаюсь сжать, - это просто метка, которая является подпредставлением содержимого viewView ячейки. Я не уверен, что сам contentView автоматически изменяет размер, когда появляется кнопка удаления; но кажется, что это не так; в противном случае моя маска авторазмера должна была сработать.

Если наличие кнопки удаления не приводит к изменению размеров любого вида; В любом случае, я могу сделать это вручную?

Ответы [ 3 ]

4 голосов
/ 03 февраля 2011

Вы должны использовать UIViewAutoresizingF flexLeftMargin.

Вот почему. Вы хотите, чтобы содержимое перемещалось влево, создавая впечатление, будто кнопка удаления толкает содержимое влево. FlexibleLeftMargin в основном означает, что ваша UILabel останется фиксированной с правой стороны вашего contentView. Причина, по которой вы этого хотите, заключается в том, что кнопка удаления фактически заставляет ваш contentView уменьшать его ширину.

Маска автоматического изменения размера вашей UILabel указывает на то, как она ведет себя внутри contentView, а не в ячейке.

Попробуйте, это должно сработать.

3 голосов
/ 05 марта 2012

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

Отображается только размер ContentView ячейки с кнопкой подтверждения.Если вы не добавите свои представления (метки, изображения и т. Д.) В cell.contentView, а не добавите их непосредственно в ячейку, они не будут изменены при изменении размера contentView.В моем случае я добавлял его в ячейку напрямую.

Итак, вместо того, чтобы делать что-то вроде:

UILabel *nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, width-10, 20)];
[nameLabel setFont:[UIFont boldSystemFontOfSize:16]];
[nameLabel setHighlightedTextColor:[UIColor whiteColor]];
[nameLabel setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
[nameLabel setTag:101];
[cell addSubview:nameLabel];
[nameLabel release];

, вы должны сделать:

UILabel *nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, width-10, 20)];
[nameLabel setFont:[UIFont boldSystemFontOfSize:16]];
[nameLabel setHighlightedTextColor:[UIColor whiteColor]];
[nameLabel setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
[nameLabel setTag:101];
[[cell contentView] addSubview:nameLabel]; // <<--- note the change in this line!
[nameLabel release];

Надеюсьэто помогает другим, кто сталкивается с этой проблемой.

1 голос
/ 06 марта 2014

Я использую iOS 7, у меня та же проблема. Я использую отдельный xib для UITableViewCell с включенной автоматической разметкой, поэтому просто добавил еще одно ограничение для метки, чтобы он имел фиксированный зазор с правой стороны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...