【问题标题】:Resize UITableViewCell content when delete button shows up显示删除按钮时调整 UITableViewCell 内容的大小
【发布时间】:2014-03-06 19:13:15
【问题描述】:

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

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

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

【问题讨论】:

    标签: objective-c ios uitableview autoresizingmask


    【解决方案1】:

    您应该使用 UIViewAutoresizingFlexibleLeftMargin。

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

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

    试一试,应该可以的。

    【讨论】:

    • UIViewAutoresizingFlexibleLeftMargin 对我不起作用,但 UIViewAutoresizingFlexibleWidth 可以。
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-06
        • 1970-01-01
        • 1970-01-01
        • 2011-03-19
        • 2016-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多