【问题标题】:Aligning label relative to another dynamically created label相对于另一个动态创建的标签对齐标签
【发布时间】:2012-12-14 11:23:45
【问题描述】:

我正在编写一个动态创建标签并相对于创建的最后一个标签重新对齐标签的代码。我正在使用以下代码来创建标签的高度并调整其大小以适应内容。

// Create label
UILabel *label =  [[UILabel alloc] initWithFrame:CGRectZero];
label.text = SomeVariatingTextContent;
[self.scrollView addSubview:label];
// Resize Label
UIFont* font = label.font;
CGSize constraintSize = CGSizeMake(label.frame.size.width, MAXFLOAT);
CGSize labelSize = [label.text sizeWithFont:font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeTailTruncation];
label.frame = CGRectMake(label.frame.origin.x, label.frame.origin.y, 280, labelSize.height);

如何找到上一个标签的标识符,以便我可以重新对齐正在创建的下一个标签,使其始终比上一个创建的标签低 8 点?

【问题讨论】:

    标签: iphone xcode cocoa-touch ios6 alignment


    【解决方案1】:

    尝试使用CGRectGetMinY等(看这里:CGGeometry Reference获取前一个UILabel的边缘,例如:

    CGFloat *yPos =  CGRectGetMinY(previousLabelRect);
    nextLabel.frame = CGRectMake(x,yPos+8,width,height);
    

    编辑

    我可以假设最后一个 UILabel 是您添加到视图中的最后一个,因此您可以:

     UILabel lastLabel = [[self.view subviews]lastObject];
    

    Br 请注意,如果您稍后添加了其他子视图,则需要过滤数组以仅获取 UILabel。如果顺序是问题,您可以获取所有标签并检查它们的 y 位置以获取最后一个。

    另一种方法是在创建标签的循环末尾保存指向 UILabel 的指针,并在每次创建新标签时更新该指针。

    【讨论】:

    • 也许我可以更好地表达我的问题:真正的问题是我没有前一个标签的标识符,因为标签是动态创建的。或者有没有一种方法可以在带有索引的 for 循环中创建标签,然后我可以在每个标签标识符上放置一个唯一的数字?
    • 您可以获取包含超级视图的子视图并通过这种方式找到您的标签。
    • @shannoga 谢谢!这正是我想要的。
    猜你喜欢
    • 2013-06-25
    • 2018-09-24
    • 1970-01-01
    • 2017-07-17
    • 2023-03-14
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多