动态调整大小的UILabel旋转后无法正确调整大小

时间:2012-07-25 21:32:16

标签: iphone objective-c ios ipad

我有一个动态大小的uitableviewcell,有4个子视图。所以我的细胞看起来像这样:

    |Image       Label1 |      
    |            Label2 |      
    |            Label3 |      
     -------------------               

Label2和Label3以及Image是静态大小的。在我用文字填充它们之前,我知道它们的大小。 Label1根据其文本内容动态调整大小。 Label1限制为3行文本,并启用了wordwrap换行模式。如果遵循以下步骤,则会出现此问题:

  1. 用户查看包含Label1的tableviewcell,其中包含2行文字处于纵向模式
  2. 用户切换到横向模式。 Label1已正确调整大小。
  3. 用户在步骤1滚动离开单元格,使其被放入可重复使用的单元队列中。
  4. 用户切换回纵向模式并从步骤1滚动回单元格.Label1的尺寸现在比它需要的大得多(比最初的纵向模式大)并且因为其他标签放在点上这取决于label1的大小,它们也不合适。
  5. 我正在使用[text sizeWithFont:label.font constrainedToSize:maxSize lineBreakMode:label.lineBreakMode]来获取uilabel的大小。这发生在tableView:willDisplayCell:forRowAtIndexPath:中。我还在Label1上使用以下autoresizemasks:UIViewAutoresizingFlexibleWidth| UIViewAutoresizingFlexibleHeight。我正在计算单元格的框架,它是tableView:willDisplayCell:forRowAtIndexPath:中的子视图,起初看起来这就是问题所在。但调试显示此方法返回Label1的正确帧。我猜测在设置框架并导致问题后,必须调整label1的大小?

    此外,Label2和Label3具有以下自动调整大小:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin

0 个答案:

没有答案