无法使用约束右对齐视图

Posted

技术标签:

【中文标题】无法使用约束右对齐视图【英文标题】:Unable to right-align view using contraints 【发布时间】:2013-08-26 03:18:23 【问题描述】:

我有一个使用自定义 UITableViewCell 的 tableview。该单元格包含一个需要在单元格中右对齐的 UILabel。

这是一个 iPad 应用程序。我将自定义单元格设计为默认适合纵向(768 宽度)。问题是当应用程序旋转到横向时,UILabel 不会停留在右侧。我什至进行了测试,以确保单元格本身正确拉伸到横向宽度。

无论我做什么,它似乎都只想相对于左侧对齐。在 IB 的约束中,我选择了“Trailing Space to Superview”,但它似乎没有做任何事情。 IB 自动将水平间距 (651) 设置为从左侧偏移。我无法删除此约束。

这真的很难做到吗,还是我错过了一些非常明显的东西?

【问题讨论】:

您是在代码中还是在 IB 中设置约束?自动布局是否开启? @CaptJak,IB 仅在这一点上。是的,约束已打开。其他约束正常工作。 那么,如果你给标签一个单元格的尾随空格和一个特定的宽度,你不能删除左侧的约束吗? 我不知道如何仅使用 IB 来做到这一点...但是您是否尝试过将 UILabel 固定到原型单元? (即编辑器\引脚\水平间距) @rdelmar,除了“到 Superview 的尾随空格”之外,还有其他方法可以添加尾随空格吗?这是我尝试过的,但它没有做任何事情,即没有添加新的约束。 【参考方案1】:

【这边走Cell IBoutlet】

1.从 ios/用户界面/Empty 添加新文件。 2. 从对象中添加表格视图单元格并在其中添加标签。 2.给标签标签1加设置对齐权(如下图所示)

  [1]: http://i.stack.imgur.com/8AzJH.png

现在在您的 tableview 委托方法中添加以下行

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    NSString *cellid =@"Cellid";

    UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:cellid];
    if(cell==nil)

        cell =[[[NSBundle mainBundle] loadNibNamed:@"cell" owner:self options:nil] objectAtIndex:0];
        //[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellid];

    
    UILabel *celllabel = (UILabel*)[cell viewWithTag:1];
    celllabel.text =@"Test label alignment";
    return cell;

这对我来说非常有用。

【讨论】:

以上是关于无法使用约束右对齐视图的主要内容,如果未能解决你的问题,请参考以下文章

右约束在 iphone SE 上无法正常工作

将右对齐约束添加到以编程方式添加的子视图

如何添加约束以右对齐 UITableViewCell 内的图像

使用自动布局约束时,UIView 无法通过 UIpangesture 顺利拖动

UIScrollView 的指示器不显示也不滚动

无法正确地自动调整自动布局和堆栈视图(Swift 3、Xcode 8)