我的视图中有一个UITextField,它有大小限制来布局它的位置。我想要发生的是UITextField在用户开始编辑字段时改变宽度。
我将视图控制器设置为字段的委托,并且我在此处使用委托方法
- (void)textFieldDidBeginEditing:(UITextField *)textField{
NSLog(@"Search Field is being edited");
}
我需要知道的是,textField
需要做些什么才能使宽度发生变化,因为我尝试过的所有东西都不起作用。
由于
答案 0 :(得分:1)
您是否尝试过使用addTarget:action:forControlEvents? (下面我用Masonry在代码中设置约束)
某处:
UITextField *textField = [[UITextField alloc] init];
[textField setBackgroundColor:kBlackColor];
[textField setTextColor:kWhiteColor];
[textField setText:@"TEXT"];
[self.view addSubview:textField];
[textField addTarget:self action:@selector(textFieldDidChange:) UIControlEventEditingChanged];
[textField mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(self.view.mas_centerX);
make.centerY.equalTo(self.view.mas_centerY);
make.width.equalTo(@100);
make.height.equalTo(@20);
}];
和
- (void)textFieldDidChange:(UITextField *)textField
{
CGSize size = [textField sizeThatFits:CGSizeMake(CGFLOAT_MAX, textField.frame.size.height)];
CGFloat minimumWidth = MAX(100, size.width);
[textField mas_updateConstraints:^(MASConstraintMaker *make) {
make.width.equalTo(@(minimumWidth));
}];
[self.view layoutIfNeeded];
}
答案 1 :(得分:1)
您可以做的是为文本字段的宽度约束设置出口。 在下面的例子中,我假设它的名字是textFieldWidthConstraint
在您的textFieldDidBeginEditing:
方法中添加以下内容:
-(void)textFieldDidBeginEditing:(UITextField *)textField
{
// no animation
self.textFieldWidthConstraint.constant = newWidth;
// animation
[self.view layoutIfNeeded];
[UIView animateWithDuration:0.3 animations:^
{
self.textFieldWidthConstraint.constant = newWidth;
[self.view layoutIfNeeded];
}
}
你可以为身高做同样的事情。
希望有所帮助,如果您需要更多帮助,请告诉我。
答案 2 :(得分:-1)
您可以使用.size
并将其设置为CGSize
您想要的任何内容。