在某个用户操作后,我希望调整UITextField
的大小并将其移到右侧:例如
CGRect oldFrame = self.sampleTextField.frame;
CGRect newFrame = CGRectMake(oldFrame.origin.x + 100,
oldFrame.origin.y,
oldFrame.size.width - 100,
oldFrame.size.height);
[self.sampleTextField setFrame:newFrame];
这可以使用大约半秒钟,然后UITextField
会重新捕捉到原始未经编辑的帧。
UITextField
已放置在故事板中,但我已从中删除了所有自动布局限制。
自动布局是否会将UITextField
返回原始帧?
有没有办法通过我当前的设置实现这一点,还是我必须从故事板中取出UITextField
并以编程方式将其添加到视图中?
答案 0 :(得分:1)
如果您在不向元素添加任何约束的情况下构建和运行,您会发现Interface Builder 修复元素的宽度和高度,引脚相对于其位置超视图的左上角。
要使界面对大小或方向的变化做出正确反应,您需要开始添加约束。您还可以在设置框架之前以编程方式删除自动添加的约束,并将translatesAutoresizingMaskIntoConstraints
设置为NO
。
答案 1 :(得分:1)
实现所需内容的最简单方法是在IB中添加适当的约束(左边缘,顶部或底部边缘和宽度),并将IBOutlet设置为左边约束和宽度约束(我将其称为leftCon和widthCon)。在代码中,然后调整这些约束的常量值
self.leftCon.constant += 100;
self.widthCon.constant -= 100;
如果你想要为它设置动画,那么将它们放入(或者只是在上面,它可以以任何方式工作)动画块,
- (void)adjustTextField {
self.leftCon.constant += 100;
self.widthCon.constant -= 100;
[UIView animateWithDuration:1 animations:^{
[self.view layoutIfNeeded];
}];
}