【问题标题】:How can I add a UILabel after auto shrink label without overlapping the second one如何在自动收缩标签后添加 UILabel 而不会重叠第二个标签
【发布时间】:2012-07-15 16:48:29
【问题描述】:

我正在 iPhone 视图中处理标签,第一个是根据从远程 Web 服务获取的字符串内容自动调整大小的,尽管我旁边还有另一个 UILabel,但是当第一个标签文本变得很长时与最后一个标签重叠,如何避免...

【问题讨论】:

  • 你的 UILabel 的起始位置是什么?
  • 相应地调整框架,例如,将 label2.frame.origin.x 设置为大于或等于 label1.frame.origin.x + label1.frame.size.width。
  • 该点不是第一个标签开始的地方,因为我需要第二个标签从 x 点开始在第一个标签完成后开始,无论第一个标签高度是基于动态调整的它的内容..

标签: iphone ios uilabel


【解决方案1】:

如果您通过 interface-builder 创建了标签

创建两个 UILabel IBOutlet 属性 作为 lbl1 和 lbl2。 然后将 IBOutlet 连接到界面生成器。 然后在 viewDidLoad

中编写如下代码
[lbl1 setNumberOfLines:0];
lbl1.lineBreakMode = UILineBreakModeWordWrap;
[lbl1 sizeToFit];
lbl1.text = @"your text here";

lbl2.frame =  CGRectMake(lbl1.frame.origin.x + lbl1.frame.size.width,  lbl1.frame.origin.y + lbl1.frame.size.height, 100, 50)];    
[lbl2 setNumberOfLines:0];   
lbl2.lineBreakMode = UILineBreakModeWordWrap;   
[lbl2 sizeToFit];
lbl2.text = @"your text here";

那别忘了再写/执行/调用代码 lbl2.frame = CGRectMake(lbl1.frame.origin.x + lbl1.frame.size.width, lbl1 .frame.origin.y + lbl1.frame.size.height, 100, 50)]; 同时将文本分配给 lbl1。

如果您通过代码创建标签

下面的代码对我有用

- (void)viewDidLoad {

    //Adding first label
    UILabel* lbl1 = [[UILabel alloc]initWithFrame:CGRectMake(0, 10, 100, 50)];
    lbl1.text = @"vbdsbfdshfisdhfidshufidhsufhdsf dhdsfhdksbf hfsdh fksdfidsf sdfhsd fhdsf sdhfh sdifsdkf ksdhfkds fhdsf dsfkdsfkjdhsfkjdhskfjhsdk fdhsf vbdsbfdshfisdhfidshufidhsufhdsf dhdsfhdksbf hfsdh fksdfidsf sdfhsd fhdsf sdhfh sdifsdkf ksdhfkds fhdsf dsfkdsfkjdhsfkjdhskfjhsdk fdhsf";
    [lbl1 setMinimumFontSize:8.0];
    [lbl1 setNumberOfLines:0];
    [lbl1 setFont:[UIFont systemFontOfSize:10.0]];
    lbl1.lineBreakMode = UILineBreakModeWordWrap;
    lbl1.backgroundColor = [UIColor redColor];
    [lbl1 sizeToFit];
    [self.view addSubview:lbl1];

    //Adding second label
    UILabel* lbl2 = [[UILabel alloc]initWithFrame:CGRectMake(lbl1.frame.origin.x + lbl1.frame.size.width, lbl1.frame.origin.y + lbl1.frame.size.height, 100, 50)];  
    lbl2.text = @"vbdsbfdshfisdhfidshufidhsufhdsf dhdsfhdksbf hfsdh fksdfidsf sdfhsd fhdsf sdhfh sdifsdkf ksdhfkds fhdsf dsfkdsfkjdhsfkjdhskfjhsdk fdhsf vbdsbfdshfisdhfidshufidhsufhdsf dhdsfhdksbf hfsdh fksdfidsf sdfhsd fhdsf sdhfh sdifsdkf ksdhfkds fhdsf dsfkdsfkjdhsfkjdhskfjhsdk fdhsf";
    [lbl2 setMinimumFontSize:8.0];
    [lbl2 setNumberOfLines:0];
    [lbl2 setFont:[UIFont systemFontOfSize:10.0]];
    lbl2.lineBreakMode = UILineBreakModeWordWrap;
    lbl2.backgroundColor = [UIColor redColor];
    [lbl2 sizeToFit];
    [self.view addSubview:lbl2];

    [lbl1 release];
    [lbl2 release]; 

    [super viewDidLoad];
}

【讨论】:

  • 看起来很酷,但标签是使用界面生成器构建的
  • 嗬!!你浪费了我的时间......你必须提到有问题的细节。否则其他人将开始投票...... :) 我更新了我的答案。请检查它
猜你喜欢
  • 1970-01-01
  • 2010-09-27
  • 2023-03-24
  • 2017-06-14
  • 1970-01-01
  • 2012-04-12
  • 2017-08-03
  • 1970-01-01
  • 2018-06-09
相关资源
最近更新 更多