0

我已经对 UITableView 单元进行了子类化,并且我想以编程方式向它添加 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;

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

如果我注释掉该autoresizingMask行并以纵向方式启动设备,这会很好。但是,每当我将autoresizing行添加回来时,它会将文本字段从点 400 移开,即使是纵向。

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

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

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

4

2 回答 2

1

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

self.myTextField.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin;
于 2012-07-09T15:45:49.097 回答
1

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

现在不确定,但您的第二次编辑似乎表明该单元格被初始化为默认情况下适合 iPhone 纵向的框架(320 点),因此400将超出视图的初始范围。由于文本字段最初位于单元格边界之外,它会尝试使用灵活的左边距自动调整大小掩码保持这种状态。

于 2012-07-09T15:58:00.853 回答