4

有没有办法使用自动调整蒙版来移动我的内容,这样删除按钮就不会覆盖它?UIViewAutoresizingFlexibleRightMargin谷歌搜索告诉我,我需要在我的子视图上设置一个自动调整大小的掩码。在我看来,UIViewAutoresizingFlexibleWidth这实际上更有意义;虽然我都试过了,但都不管用。

我试图缩小的视图只是一个标签,它是单元格内容视图的子视图。我不确定当删除按钮出现时 contentView 本身是否会自动调整大小;但似乎不是;否则我的自动调整蒙版应该可以工作。

如果删除按钮的存在不会导致调整任何视图的大小;无论如何我可以手动执行此操作吗?

4

3 回答 3

4

您应该使用 UIViewAutoresizingFlexibleLeftMargin。

这就是为什么。您希望您的内容向左移动,基本上使删除按钮看起来像是将内容向左推,不碍事。flexibleLeftMargin 基本上意味着您的 UILabel 将保持固定在您的 contentView 的右侧。你想要这个的原因是因为删除按钮实际上会导致你的 contentView 缩小它的宽度。

你的 UILabel 的 autoresizingmask 是指它在 contentView 中的行为,而不是单元格。

试一试,它应该可以工作。

于 2011-02-03T00:01:23.827 回答
3

这个问题真的很老,但我觉得无论如何我都应该回答这个问题,因为我自己刚刚找到了解决方案。

只有单元格的 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];

希望这可以帮助其他偶然发现此问题的人。

于 2012-03-05T00:54:33.023 回答
1

我正在使用 iOS 7,我遇到了同样的问题。我为启用了自动布局的 UITableViewCell 使用了一个单独的 xib,因此只需向标签添加一个约束,以便它在其右侧有一个固定的间隙。

于 2014-03-06T11:13:15.593 回答