在表视图单元格中更改标签框架

时间:2011-05-10 11:36:12

标签: cocoa-touch ios uitableview

昨天我问过如何在表格视图单元格中更改标签的位置,但我仍然没有得到它。实际上,我在单元格的右角有一个标签。当我改为横向模式时,它会移动到中心,但我希望它在右上角。请有人帮助我。

5 个答案:

答案 0 :(得分:0)

以下是文章In巫婆我描述了如何创建自定义tableViewCell可能有助于Custom tableViewCell example with images and lables检查它。

答案 1 :(得分:0)

首先,您需要自定义UITableViewCell实例,方法是以编程方式向其添加UILabel对象,或通过Interface Builder进行设计。

放置标签后,要更改其位置,您应该考虑编辑其框架属性。 E.g:

UILabel *label = cell.label; // You should change this code to properly read the label
CGRect frame = label.frame;
frame.position.x = new_x_position;
frame.position.y = new_y_position;
label.frame = frame;

这样您就可以根据需要更新标签的位置。

如果您遇到的问题是在更改界面方向时正确定位标签,则应正确设置该组件的自动调整遮罩。为了使其正确对齐:

label.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;

使其左对齐:

label.autoresizingMask = UIViewAutoresizingFlexibleRightMargin;

此外,您可以选择自动调整标签的宽度:

label.autoresizingMask = UIViewAutoresizingFlexibleWidth;

或者,您可以选择以前的组合:

label.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin |
                         UIViewAutoresizingFlexibleRightMargin |
                         UIViewAutoresizingFlexibleWidth;

如果有帮助,请告诉我。

答案 2 :(得分:0)

您要做的是创建UITableViewCell的子类,并覆盖layoutSubviews方法。当单元格的大小发生变化时,例如当您更改界面方向时,将调用它。

在此方法中,您首先调用超级实现以正确更新内容,附件,背景等视图的布局。然后更新您的自定义内容。

应该为所有自定义内容添加表格视图单元格的contentView子视图的子视图,而不是作为表格视图单元格的直接子视图。这很重要,否则选择和突出显示会搞砸。

您还可以直接创建UIView的子类,并将其用作完全覆盖contentView的子视图,并在那里覆盖layoutSubviews,而无需调用超级实现。

答案 3 :(得分:0)

感谢每个人都做到了。我只是将帧设置为正确的位置并添加到tableviewcell的contentView。

lideCell1.sliderValueForSecond.frame=CGRectMake(25, 8, 400,23);
                slideCell1.tickLbl.frame=CGRectMake(430, -3, 27,40);
                slideCell1.tickLbl.text=@"+";
                slideCell1.tickLbl.font = [UIFont boldSystemFontOfSize:36.0];
                [slideCell1.contentView addSubview:slideCell1.sliderValueForSecond];
                [slideCell1.contentView addSubview:slideCell1.tickLbl];

这里slideCell1是tableviewcell的对象。

答案 4 :(得分:0)

如果我希望我的textLabel缩进16,那么在cellForRowAtIndexPath:中,我会输入:

cell.indentationWidth = 8.0;
cell.indentationLevel = 1;

单元格属性indentationLevel(CGFloat)确定缩放indentationWidth的宽度textLabel(NSInteger)的倍数。

indentationWidth的默认值为10.0,默认值indentationLevel为0。