Pau*_*oub -7 uitableview uikit ios
刚刚开始使用iOS开发,我希望我能在这里获得正确的详细信息......
我有一个UILabel,加载在通过.xib创建的表格单元格中.实际上是几个标签,其中一个标签长度不同(因此包装高度不同). heightForRowAtIndexPath被正确覆盖的等等,并且正确计算了两个标签所需的高度并分配给每个标签.frame
一旦设置了两个尺寸,我设置较小(固定长度,总是一行高)标签的frame.origin.y以匹配较大标签的尺寸.这可以看作是可以看到逐步通过cellForRowAtIndexPath但是在新创建的单元的初始显示上,原点似乎在容器中不是非常垂直居中,而不是顶部向上.
单击"穿过"单元格到另一个视图,然后返回到(现在重用,并且可能已经是正确大小的容器),位置设置为之前,它出现在我预期的位置.
它看起来像容器后被调整cellForRowAtIndexPath收益,并在那里的某处新的位置找到了我们的标签; 这可以解释为什么以后重复使用单元格可以解决问题.
我已经尝试了内外模式和基线设置,拉伸设置等各种明显合理的组合.无法解释和/或解决方法.
更新:
关于在自定义UITableViewCell问题中更改自定义UIButton位置的建议解决了这个问题.解决方案是子类化UITableViewCell和覆盖layoutSubviews,从而有机会在TableView完成其正常定位后重新定位子元素.一旦这个人在这里做出回应,或者赏金到期,我将用代码回答我自己.
如果我在UITableViewCell中执行任何复杂的布局,我会尝试将其保留在cellForRowAtIndexPath之外.一种选择是进行布局,- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath但我更喜欢将布局封装在自定义UITableViewCell类中.
创建自己的UITableViewCell子类.在init方法中创建自定义按钮/标签/视图并将其添加到单元格的contentView中,或者通过访问者属性懒惰地创建和添加它.覆盖layoutSubviews并根据需要设置按钮.
像这样的东西:
@implementation MyCustomCell
- (void) init
{
self = [super initWithStyle: UITableViewCellStyleDefault reuseIdentifier: nil];
if ( self != nil )
{
_myButton = [[UIButton buttonWithType: UIButtonTypeRoundedRect] retain];
[self.contentView addSubview: _myButton];
}
return self;
}
- (void) layoutSubviews
{
[super layoutSubviews];
// dynamic layout logic:
if ( ... )
{
_myButton.frame = CGRectMake( 10, 10, 100, 30 );
}
else
{
_myButton.frame = CGRectMake( 20, 10, 50, 30 );
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2344 次 |
| 最近记录: |