【问题标题】:UILabel Position not change inside UITableviewcellUILabel 位置在 UITableviewcell 内没有改变
【发布时间】:2014-12-13 07:33:58
【问题描述】:

我正在尝试更改自定义 UITableViewCell 中包含的 UILabel 的位置,但它没有移动。我启用了自动布局。

- (void)updateLayout
{
    NSArray* comp = [self.accessibilityHint componentsSeparatedByString:@"/"];
    if (comp.count > 1)
    {
    CGRect rect = _imageViewT.frame;
    rect.origin.x = 20 * comp.count;
    rect.size.width = 44.0;
    [_imageViewT setFrame:rect];
    [_imageConstraint setConstant:_imageViewT.frame.origin.x-8];

    rect = _lableT.frame;
    rect.origin.x = _imageViewT.frame.size.width+_imageViewT.frame.origin.x+8;
    rect.size.width = self.frame.size.width-rect.origin.x-40;
    [_lableT setFrame:rect];
    //[_imageConstraint setConstant:_imageViewT.frame.origin.x-8];


}
else
{
    CGRect rect = _imageViewT.frame;
    rect.origin.x = 10;
    rect.size.width = 43.0;
    [_imageViewT setFrame:rect];
    [_imageConstraint setConstant:2];

    rect = _lableT.frame;
    rect.origin.x = 62;
    rect.size.width = self.frame.size.width-rect.origin.x-40;
    [_lableT setFrame:rect];
}

}

我正在从 cellForRowAtIndexPath 调用更新方法。 self.accessibilityHint 包含字符串,如 aa/bb/cc、aa/cc

【问题讨论】:

    标签: ios objective-c iphone ios7


    【解决方案1】:

    UITableViewCell 将在layoutSubviews: 中在 cellForRowAtIndexPath: 之后布局子视图,因此您的布局将在单元格的 layoutSubviews 中重置。 您应该将布局代码从 cellForRowAtIndexPath: 移动到单元格的 layoutSubviews。

    【讨论】:

    • 是的,我也这样做了。它工作正常。但是现在当我选择任何行时,它会再次改变位置。或者当我旋转我的设备时,它会再次改变位置。
    • 是的,=layoutSubvies= 会被调用多次,如果单元格认为它应该重新布局自己,例如帧改变,setSelected:。因此,如果您将布局代码放在 layoutSubvies 中,则必须确保它始终正常工作。也许您必须创建一些属性来识别单元格的当前状态,然后您可以根据该属性进行不同的布局。
    • 能否请您告诉我如何获取当前单元格状态。
    • 如果我不调用 [super layoutSubviews] 就可以正常工作,但在这种情况下 UITableViewCellAccessoryCheckmark 没有显示在正确的位置
    • 是的,你应该调用 [super layoutSubviews],单元格将在 super 方法中布局 contentView/textLabel/detailTextLabel/accessoryView/backgroundView/...。我说的“单元格状态”是指“comp.count > 1”与否,而不是UITableViewCell的系统状态。
    【解决方案2】:

    设置标签的 autoresizingMask 属性,我总是将它与单元格的子视图一起使用。

    【讨论】:

      猜你喜欢
      • 2015-02-05
      • 1970-01-01
      • 2021-03-25
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      • 1970-01-01
      相关资源
      最近更新 更多