在UITableViewCell中自动化UIViews

时间:2012-07-09 15:40:13

标签: objective-c ios xcode cocoa

我已经将UITableView Cell子类化,我想以编程方式向其添加UITextField。我已经想出了如何创建文本字段;但是,当设备旋转时,我很难调整大小。这是我的代码(请记住self是一个UITableViewCell子类)

self.myTextField = [[UITextField alloc] init];
self.myTextField.frame = CGRectMake(400, 6,TEXT_FIELD_WIDTH ,TEXT_FIELD_HEIGHT);
[self addSubview:self.myTextField];
self.myTextField.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin;

我想要的是无论方向如何,文本字段都在屏幕中心周围有一个x原点(在点400附近),我希望它保持与右侧屏幕边缘的距离,否则扩展其宽度(灵活的左边距)。

如果我注释掉autoresizingMask行并以纵向方式启动设备,这样可以正常工作。但是,每当我添加autoresizing行时,它会将文本字段从点400移开,即使是在肖像中。

有什么建议吗?我也尝试将文本字段添加到内容视图中,但这似乎没有改变任何内容。

编辑:我考虑过使用layoutsubviews方法,但这看起来有点粗糙,因为我必须在一堆不同的坐标中进行硬编码。因此,如果有另一种方法可以做到这一点,那将是首选。

编辑:例如,为了让文本字段从中间开始,我必须给它一个大约150的框架xOrigin。

2 个答案:

答案 0 :(得分:1)

你设置了autoresizingMask错误。您必须使用C按位OR运算符指定组合UIViewAutoresizing中描述的常量的值,如:

self.myTextField.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin;

答案 1 :(得分:1)

如果你想让它在中间,你不应该硬编码400。只需使用self.bounds.size.width * 0.5

目前还不确定,但是你的第二次编辑似乎建议默认情况下(320点)使用适合iPhone纵向方向的框初始化单元格,因此400将超出初始范围风景。由于文本字段最初位于单元格的边界之外,因此它会尝试使用灵活的左边距自动调整遮罩保持这种方式。